题目描述 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 思路:两个指针一前一后,遍历找重复节点,特殊情况考虑重复的节点是头节点 class Solution { publi ...
分类:
其他好文 时间:
2017-12-22 13:27:32
阅读次数:
121
有一个单向链表,链表当中有可能出现“环”。如何用程序判断出这个链表是有环链表? 方法一:首先从头节点开始,依次遍历单链表的每一个节点。每遍历到一个新节点,就从头节点重新遍历新节点之前的所有节点,用新节点ID和此节点之前所有节点ID依次作比较。如果发现新节点之前的所有节点当中存在相同节点ID,则说明该 ...
分类:
其他好文 时间:
2017-12-19 01:38:18
阅读次数:
172
注意到在插入新链表时,head->next已经修改,需要保存原值,供第二步使用。 Node* result = 0; while (head) { Node* next = head->next; 先处理头节点,加在新链表末尾。 head->next = result; result = head; ...
分类:
其他好文 时间:
2017-12-19 00:51:23
阅读次数:
145
【题目】输入一个链表的头节点,从尾到头反过来打印每个节点的值。 1. 遍历的顺序是从头到尾,打印的顺序则是从尾到头,首先,想到栈,然后,递归的本质是一个栈结构,因此,想到用递归。 ...
分类:
其他好文 时间:
2017-12-02 23:27:36
阅读次数:
204
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 思路就是归并算法的思路,注意首先判断两个链表节点都不为空,判断大小while循环之后,要看哪个链表节点不为空,使用哨兵节点的方法处理头节点。 /* struct ListNode { int va ...
分类:
编程语言 时间:
2017-11-29 22:43:08
阅读次数:
217
AbstractQueuedSynchronizer: /** * 同步等待队列的头节点,懒汉式初始化。只能通过setHead方法来改变该属性。 * 注:如果头节点存在,那么它的waitStatus可以保证一定不是CANCELLED。 */ private transient volatile No... ...
分类:
其他好文 时间:
2017-11-07 00:21:19
阅读次数:
234
一、RTOS里面的重要数据结构 链表 很多RTOS包括Linux的内核在内,内核里面都大量使用了链表这一种数据结构。内核的链表一般都是双向循环链表,这是因为双向循环链表的效率是最高的,找头节点、尾节点,直接前驱、直接后继时间复杂度都是O(1),这是使用单链表、单向循环链表或其他形式的链表是不能完成的 ...
分类:
其他好文 时间:
2017-11-06 19:05:13
阅读次数:
209
用C语言的指针实现了单向链表中的几项基本操作:新建链表,置空链表,插入节点(由于在尾部加入新节点尤为常用,故单独用一个函数实现),删除节点。为了以上操作更便捷,另分别写了返回尾节点和某特定节点的函数。为了统一插入及删除节点的操作,使其不因节点位置不同而受到影响(主要是插入或删除头节点),我在真正的表 ...
分类:
编程语言 时间:
2017-10-29 12:39:32
阅读次数:
144
题目描述 我的代码 结论:删除链表中的元素这一道题是LintCode中的一道入门题,以前写算法题的时候用的都是C语言写的,C语言中有指针这个概念,利用指针理解链表的结构就比较容易,但是这次我用的是Java,刚开始写的时候一脸蒙,转不过弯来。我的思路是新建一个头节点h,再把这个节点赋值给p,然后循环遍 ...
分类:
其他好文 时间:
2017-10-24 00:18:46
阅读次数:
196
1 /*双向链表特点: 2 *1.每个节点含有两个引用,previos和next,支持向前或向后的遍历(除头节点) 3 *2.缺点插入或删除的时候涉及到引用修改的比较多 4 *注意:下面的双向链表其实也实现了双端链表 5 *注意:在Java中多个引用可以指向同一个对象,也可以随时改变引用的指向 6 ... ...
分类:
编程语言 时间:
2017-10-17 12:23:02
阅读次数:
266