关于链表插入的问题
小甲鱼老师说操作结果是在第i个节点之前插入新元素这是小甲鱼老师的 代码
/*初始条件,顺序线性表已经存在,1<=i<=ListLength(L)*/
/*操作结果,在L中第i个位置之前插入新元素e,L的长度+1*/
Status ListInsert(LinkList *L,int i,ElemType e)
{
int j;
LinkList p,s;
p=*L;
j=1;
while(p && j<i)
{
p=p->next;
j++;
}
if( !p || j>i)
{
return ERROR;
}
s=(LinkList)malloc(sizeof(Node));
s-data = e;
s->next = p->next;
p->next = s;
return OK;
}
我感觉应该吧while中的j<i改成j<i-1
这样才是插在第i个元素之前
求解答
其实取决于 这个链表的序号i 是从0开始还是从1开始
如果头结点的数据域是个空节点(大部分链表都是这么做 表明头结点的特殊性) 那么序号就是从0开始
那么p刚好是第i个节点
s->next = p->next;
p->next = s;
这句明显就是在p的节点和p的后继节点之间 插入一个s节点
按函数说明来说 那就是第i个节点之后插入一个节点 正解 ryxcaixia 发表于 2016-3-27 12:12
其实取决于 这个链表的序号i 是从0开始还是从1开始
如果头结点的数据域是个空节点(大部分链表都是这么做...
如果链表带有头结点的话,头结点后面一个节点才是第一个节点的话这样写就是对的 要放在插入节点的前面一个。
页:
[1]