问题的由来:
当你第一次实现用递归实现链表删除功能的时候,是否有一丝丝的考虑过。这个问题呢?为什么对于非递归版本的删除必须要知道当前要删除节点的前驱,而需要对其前驱节点的next域指针进行修改。而递归删除却不需要呢?难道这样不会造成链表的断链吗?
好了。我们开始抽象出我们今天要解决的问题。
问题一:
递归实现链表节点的删除和非递归删除的区别是什么?
问题二:
为...
分类:
其他好文 时间:
2015-06-22 15:04:15
阅读次数:
197
在下面的这两篇文章中,已经讨论过了单链表和双向链表的基本情况。
"单链表 - 基本介绍以及插入节点",点此链接。
"双向链表(1) - 基本介绍以及插入节点",点此链接。
循环链表是一个所有节点相互连接,形成一个环的数据结构。链表尾部没有null节点。循环链表可以是一个单向链表,也可以是双向链表。
循环链表的好处:
1) 任何节点都可以做为头节点。 可以从任何节点开始...
分类:
其他好文 时间:
2015-06-15 01:47:22
阅读次数:
190
在双向链表中删除一个指定的节点,可以分为下面的这3种情况:
(a) 原始的双向链表
(b) 删除头节点后
(c) 删除中间节点后
(d) 删除尾节点后
算法
假设需要被删除的节点称之为delNode.
1) 如果delNode为头节点,则将头指针指向后续的节点。
2) 如果delNode的前向节点存在,则将前向节点的后向指针置为delNode...
分类:
其他好文 时间:
2015-06-14 01:55:35
阅读次数:
252
Remove all elements from a linked list of integers that have value val.
Example
Given: 1 --> 2 --> 6 --> 3 --> 4 --> 5 --> 6, val =
6
Return: 1 --> 2 --> 3 --> 4 --> 5
此题的解法在与维护两个指针。p和q,p指向当...
分类:
其他好文 时间:
2015-05-03 19:05:47
阅读次数:
149
Removeallelementsfromalinkedlistofintegersthathavevalueval.ExampleGiven:1-->2-->6-->3-->4-->5-->6,val=6Return:1-->2-->3-->4-->5分析,在给定链表前加一个头节点,然后遍历链表,删除指定项publicclassSolution{publicListNoderemoveElem..
分类:
其他好文 时间:
2015-04-30 01:12:16
阅读次数:
194
根据给定的数值,遍历链表,删除对应节点有两种可能:①:找到一个节点的data域为给定的数值,删除这个节点,函数返回。实现代码如下:/*Delete one node of given valuevoid DeleteOneNodeFromList(Node **pList,int value){ ....
分类:
其他好文 时间:
2015-03-19 16:11:59
阅读次数:
117
《C Primer Plus》确实是一本伟大的书,但尽信书不如无书,作者Stephen Prata可能也希望他的读者能找到些许他在不经意中出现的小错误吧!
在该书第五版17章“高级数据表示”中,程序清单17.2给出如下代码:
#include
#include
#include
#define TSIZE 45
#define LEN sizeof(struct film)...
分类:
其他好文 时间:
2015-03-14 20:04:44
阅读次数:
215
欢迎大家阅读参考,如有错误或疑问请留言纠正,谢谢...
分类:
其他好文 时间:
2015-02-14 16:16:16
阅读次数:
131
Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity.
一开始我没有采用分治法,解题思路是:首先比较每条链表的第一个元素,找出最小的那个,插入新链表并从原链表删除,如此反复直至所有的链表都为空链表。基于这个愚蠢的解题思路,我的C++代码实现如下:
...
分类:
其他好文 时间:
2015-02-03 17:19:27
阅读次数:
158