从无头单链表中删除某节点(编程之美3.4)
2013-09-27 14:52
246 查看
1. 题目:一个无头单向链表,有一个指针指向其中的一个节点(非第一个与最后一个节点),请问如何删除此节点。
典型解法为“狸猫换太子”,删除一个链表节点,需要知道节点的前驱节点,但是当前无法知道,当前节点为下一个节点的前驱,因此可以将下一个节点的值赋给当前节点,然后删除下一个节点。
2. 类似问题:一个无头单向链表,指针p指向其中一个节点,在当前节点前面插入一个新节点q。
在p后面插入节点q,然后交换值。
3. 扩展问题:对单向链表遍历一遍,实现链表翻转。
典型解法为“狸猫换太子”,删除一个链表节点,需要知道节点的前驱节点,但是当前无法知道,当前节点为下一个节点的前驱,因此可以将下一个节点的值赋给当前节点,然后删除下一个节点。
pcur->next=pnext->next; pcur->data=pnext->data; delete pnext;
2. 类似问题:一个无头单向链表,指针p指向其中一个节点,在当前节点前面插入一个新节点q。
在p后面插入节点q,然后交换值。
q->next=p->next; p->next=q; swap(&q->data, &p->data);
3. 扩展问题:对单向链表遍历一遍,实现链表翻转。
node* reverse(node *head) { node *n =head; head=NULL; while(n) { m=n; n=n->next; m->next=head; head=n; } return head; }
相关文章推荐
- 编程之美:第三章 结构之法 3.4从无头单链表中删除节点
- 《编程之美》3.4 从无头单链表中删除/添加节点
- 3.4 从无头单链表中删除节点
- 3.4 从无头单链表中删除节点.cpp
- [编程之美] PSet3.4 从无头单链表中删除节点
- 编程之美——从无头单链表中删除节点
- 编程之美:从无头单链表中删除节点
- 编程之美3.4 从无头单链表中删除节点
- 《编程之美》——从无头单链表中删除节点
- 3.4 从无头单链表中删除节点
- 编程之美:从无头单链表中删除节点,讨论
- 编程之美-3.4-从无头单链表中删除节点-单链表逆置
- 3.4 从无头单链表中删除节点
- 读书笔记之编程之美 - 3.4 从无头链表中删除节点
- 编程之美:从无头单链表中删除节点,讨论
- 1.删除一个无头单链表的非尾节点 2.从尾到头打印单链表
- 编程之美—从无头链表中删除结点
- 从无头单链表中删除节点 结构之法 4
- 判断链表相交,删除无头单链表的非尾节点及倒序打印单链表——题集(四)
- 编程之美--从无头链表中删除结点