// 删除节点,释放内存空间
p->next = p->next->next;
delete p->next;
若链表为:
链表节点 | 1 | 2 | 3 |…
对应指针 | p | p->next | p->next->next|…
你想删除节点2(p->next),
但你的做法是:
p->next = p->next->next;(1的下一个由指向2改为指向3);
链表节点 | 1 | 2 | 3 |…
对应指针 | p | | p->next |…
delete p->next;(删除3)
这就错了,若要删除必须先将被删的节点2保存给临时变量,修改链表后再删除。正确的做法是:
linkList* tmp = NULL;
…
tmp = p->next;
p->next = p->next->next;
delete tmp;
这就错了,若要删除必须先将被删的节点2保存给临时变量,修改链表后再删除(这句话是核心思想啊!!!!!!)
详细实例见我的C语言课程设计链表版!!!