|
1鱼币
小甲鱼老师说操作结果是在第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个节点之后插入一个节点
|
最佳答案
查看完整内容
其实取决于 这个链表的序号i 是从0开始还是从1开始
如果头结点的数据域是个空节点(大部分链表都是这么做 表明头结点的特殊性) 那么序号就是从0开始
那么p刚好是第i个节点
s->next = p->next;
p->next = s;
这句明显就是在p的节点和p的后继节点之间 插入一个s节点
按函数说明来说 那就是第i个节点之后插入一个节点
|