单链表的插入:创建一个新的结点s,代替L的指针移动。这样做的好处是,不移动L的指针,使得L的状态不被改变,但同样能对L的链表操作达到相同的效果。
Status ListInsert(LinkList &L, ElemType data,int index){
LinkList p,s;
s = L;
int i = 0;
while(s && i <(index -1)){
s=s->next;
i++;
}
if(!s||i>index-1) return ERROR;
p = new LNode;
p->data = data;
p->next = s->next;
s->next = p;
return OK;
}
运行结果图示:
如果不使用上面的做法的话,直接对L进行操作,L会移动自己的位置,再最后插入完毕之后,需要将L的位置归位。如下所示:
Status ListInsert(LinkList &L, ElemType data,int index){
LinkList p,s;
s = L;
int i = 0;
while(L && i <(index -1)){
L=L->next;
i++;
}
if(!L||i>index-1) return ERROR;
p = new LNode;
p->data = data;
p->next = L->next;
L->next = p;
L = s;
return OK;
}
运行结果图示: