|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
新手 看了本书大话数据结构 它里面讲了顺序线性表第i个位置插入一个新的数据元素 源代码如下
/* 初始条件:顺序线性表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]其实是空的
|
|