bool LinkInsert(LinkList*& L, int i, int& e) { //在带头节点的单链表L中第i个位置插入值为e的新节点 int j; LinkList* p, * s; p = L; j = 0; while (p && j < i - 1)//查找第i-1个节点,p指向该节点 { p = p->next; j++; } if (!p || j > i - 1) {//i>n+1或者i<1 return false; } s = new LinkNode;//生成新节点 s->data = e;//将新节点的数据域置为e s->next = p->next;//将新节点的指针域指向节点ai p->next = s;//将节点p的指针域指向节点s return true; }
现在有一个链表L
我们要在第三个节点插入数据5,现在有三个变量 j p s;
int j; LinkList* p, * s; p = L; j = 0;
当j=0的时候,开始循环
while (p && j < i - 1)//查找第i-1个节点,p指向该节点 { p = p->next; j++; }
然后j++, j=1了,继续循环
j++,j=2了,j<i-1不存在,跳出循环,这个时候p=a2
现在new一个节点a5,并且赋值给s,s = new LinkNode;
s->data=e;
s->next=p->next;
p->next=s;
这样就是一个新的链表: