|  | 
 
| 
新手 看了本书大话数据结构 它里面讲了顺序线性表第i个位置插入一个新的数据元素 源代码如下
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 /* 初始条件:顺序线性表L已存在,1≤i≤ListLength(L), */
 /* 操作结果:在L中第i个位置之前插入新的数据元素e,L的长度加1 */
 Status ListInsert(SqList *L,int i,ElemType e)
 {
 int k;
 if (L->length==MAXSIZE)  /* 顺序线性表已经满 */
 return ERROR;
 if (i<1 || i>L->length+1)/* 当i比第一位置小或者比最后一位置后一位置还要大时 */
 return ERROR;
 
 if (i<=L->length)        /* 若插入数据位置不在表尾 */
 {
 for(k=L->length-1;k>=i-1;k--)  /* 将要插入位置之后的数据元素向后移动一位 */
 L->data[k+1]=L->data[k];
 }
 L->data[i-1]=e;          /* 将新元素插入 */
 L->length++;
 
 return OK;
 }
 俺又几个疑问它这个L->data[k+1] 这个数据不是原来木有的吗 ?
 如果它这个成立的话那删除操作是不是从L->data[k]开始遍历就OK了?
 
如果L->length表示的是链表的长度,那么因为数组的下标是从0开始的,所以最后一个元素的下标应该为L->length-1,所以L->data[k+1]其实是空的 | 
 |