编程之美:从无头单链表中删除节点
2012-08-18 13:26
344 查看
1.问题描述
假设有一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个),请将该节点从单链表中删除。
如下图所示:
2.分析与解法
假设给定的指针为pCurrent, Node* pNext = pCurren->next
其中pCurren->next!=NULL,如下图,因为没有头结点,删除pCurren指向的节点B就很困难,而删除节点C就非常容易,于是就现将节点C当中的数据等信息拷贝到节点B上,覆盖节点B原来的数据,然后删除节点C。
删除之前
删除之后
3.代码实现
假设有一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个),请将该节点从单链表中删除。
如下图所示:
2.分析与解法
假设给定的指针为pCurrent, Node* pNext = pCurren->next
其中pCurren->next!=NULL,如下图,因为没有头结点,删除pCurren指向的节点B就很困难,而删除节点C就非常容易,于是就现将节点C当中的数据等信息拷贝到节点B上,覆盖节点B原来的数据,然后删除节点C。
删除之前
删除之后
3.代码实现
struct Node { int data; Node* next; }; void DeleteRandomNode(Node* pCurrent) { if(pCurrent == NULL) return; Node* pNext = pCurrent->next; pCurrent->data = pNext->data; pCurrent->next = pNext->next; delete pNext; }
相关文章推荐
- 从无头单链表中删除某节点(编程之美3.4)
- 编程之美:从无头单链表中删除节点,讨论
- 编程之美:第三章 结构之法 3.4从无头单链表中删除节点
- 编程之美——从无头单链表中删除节点
- 《编程之美》——从无头单链表中删除节点
- 编程之美:从无头单链表中删除节点,讨论
- 《编程之美》3.4 从无头单链表中删除/添加节点
- 删除无头单链表中的节点
- [编程之美] PSet3.4 从无头单链表中删除节点
- 编程之美—从无头链表中删除结点
- 从无头单链表中删除节点
- 从无头单链表中删除节点
- 从无头单链表中删除节点
- 判断链表相交,删除无头单链表的非尾节点及倒序打印单链表——题集(四)
- 从无头单链表中删除节点
- 从无头单链表中删除节点及单链表的逆置
- 3.4 从无头单链表中删除节点
- day05删除一个无头单链表的非尾节点 +从尾到头打印单链表+复杂链表的复制
- 编程之美--从无头链表中删除结点
- 链表面试题逆序打印,删除无头非尾节点,非头位置插入,约瑟夫环,查找中间和倒数第k个节点