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;

这样就是一个新的链表:
