单链表,节点只有一个指针域的链表。节点包括数据域和指针域。 因此用面向对象的思维,节点类的属性就有两个:一个data(表示存储的数据),一个指针next(链表中指向下一个节点)。 链表一个很重要的特性,就是这个头节点$head。它绝对不能少,每次遍历都要从它开始,并且不能移动头节点,应该用一个变量去 ...
分类:
Web程序 时间:
2018-08-12 15:42:19
阅读次数:
153
合并两个有序的单链表 给定两个有序单链表的头节点 head1 和 head2,合并两个有序链表,合并后链表依然有序,并返回合并后的链表的头节点,例如:0->2->3->7->null 和 1->3->5->7->9->null,合并后的链表为 0->1->2->3->3->5->7->7->9->n ...
分类:
其他好文 时间:
2018-08-02 01:53:24
阅读次数:
149
向有序的环形单链表中插入新节点 一个环形链表从头节点开始不会降序,同时最后的节点指向头节点。给定一个环形单链表的头节点head和一个整数num,生成新节点并将其插入到环形链表中,保证插入后的链表仍然有序。 ...
分类:
其他好文 时间:
2018-07-25 11:29:14
阅读次数:
132
在单链表中删除指定值的节点 给定一个链表的头节点head和一个整数num,实现一个函数删除链表中值为num的所有节点。例如,链表为 1->2->3->4->null ,num 为3,删除后,链表变为 1->2->4->null。 【解析】 方法一:使用栈或者其他容器收集节点的方法,其时间复杂度是 O ...
分类:
其他好文 时间:
2018-07-23 10:59:35
阅读次数:
197
题目 输入两个链表,找出它们的第一个公共结点。 思路一 因为是反向找,所以会想到用栈。将两个链表都压入两个栈,然后反向弹出,找出第一个公共节点。思路很简单 思路二 链表这种问题往往可以用快慢指针,先统计出两个链表的长度l1,l2 然后让长一点的链表从头节点先走 |l1-l2|,然后两个指针一起走,第 ...
分类:
其他好文 时间:
2018-07-22 00:29:10
阅读次数:
123
删除无序单链表中值重复出现的节点 给定一个无序单链表的头节点head,删除其中值重复的节点 例如: 1->2->3->3->4->4->2->1->1->null 删除之后变为 1->2->3->4->null 方法1:如果链表长度为N,时间复杂度达到O(N) 方法2:如果要求空间复杂度为O(1), ...
分类:
其他好文 时间:
2018-07-20 00:24:31
阅读次数:
168
将单链表的每K个节点之间逆序 给定一个单链表的头节点head,实现一个调整链表的函数,使得每K 个节点之间逆序,如果最后剩下不够K 个节点,则不调整最后几个。 例如: 链表:1—>2—>3—>4—>5—>6—>7—>8—>null,k=3。 调整好后:3—>2—>1—>6—>5—>4—>7—>8—> ...
分类:
其他好文 时间:
2018-07-20 00:21:05
阅读次数:
307
将单向链表按某值划分成左边小、中间相等、右边大的形式 给定一个单向链表的头节点head,节点的值类型是整数,再给定一个整数 pivot,实现一个调整链表的函数,使得左半部分的值都是小于pivot的节点,中间部分都是等于pivot的节点,右边部分都是大于pivot的节点,对于左半部分、中间、右半部分内 ...
分类:
其他好文 时间:
2018-07-16 23:45:24
阅读次数:
199
删除链表的中间节点和a/b处的节点 对于给定一个链表的头节点head,实现删除链表的中间节点的函数。 例如 不删除任何节点; 1->2,删除节点1 1->2->3,删除节点2 1->2->3->4,删除节点2 1->2->3->4->5,删除节点3 如果将本问题复杂一下,给定链表的头节点head、整 ...
分类:
其他好文 时间:
2018-07-15 00:19:12
阅读次数:
172
(1)单向循环链表定义: 单链表的一个变形是单向循环链表,链表中最后一个节点的next域不再为None,而是指向链表的头节点。 (2)操作: is_empty(): 判断链表是否为空 length(): 返回链表的长度 travel(): 遍历 add(item): 在头部添加一个节点 append ...
分类:
其他好文 时间:
2018-07-04 13:26:15
阅读次数:
164