数据结构线性表有关问题

来源:百度知道 编辑:UC知道 时间:2024/09/23 18:32:11
线性表的顺序储存结构中,插入数据元素 程序如下:
typedef struct
{ElemType data[50];
int length;
}SqList;

typedef char ElemType;

int ListInsert(SqList *&L,int i,ElemType e)
{
int j;
if(i<1‖i>L->length+1)
renturn 0;
i--;
for(j=L->length;j>i;j--)
L->data[j]=L->data[j-1];
L->data[i]=e;
l->length++;
return `1;
}

请各位大虾们给我详细分析下最后的插入函数,最好逐条分析,越详细越好,
我大体上了解了,但是 L->data[j]=L->data[j-1];
还是不怎么明白,比如现在有1,2,4元素,在24之间插入3,就把4向后移在哪位?赋值给哪位?之后在有L-.length才自加的。 renturn 0;表示参数错误,返回0.

int ListInsert(SqList *&L,int i,ElemType e)
//i应该是插入的位置吧,L是插入的链表,e是插入的元素
{
int j;
if(i<1‖i>L->length+1)
//如果插入位置小于1,也就是零,或者超出链表长度,表示无法插入,直接退出
renturn 0;
i--; //链表位置从0开始的,所以插入的位置要-1
for(j=L->length;j>i;j--)
//主体部分,通过循环把i后面的数据往后挪一位,空出地方给插入的元素
L->data[j]=L->data[j-1];
L->data[i]=e; //没啥说的,就把把e插到空出来的位置上
l->length++; //插入数据后链路长度自然要+1
return `1; //奇怪为什么返回1,应该是0才对吧,0表示执行成功,不解。。
}