线性链表
文章平均质量分 71
cqkmath2
这个作者很懒,什么都没留下…
展开
-
链表专题总结
专题总结:虽然做题不算太多,但对链表有了一定了解,并能熟悉的进行简单插、删、查、改的操作,链表题比数组算法相对简单一点。原创 2017-03-30 17:30:10 · 123 阅读 · 0 评论 -
删除链表中倒数第n个节点
问题描述:给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。样例:给出链表1->2->3->4->5->null和 n = 2.删除倒数第二个节点之后,这个链表将变成1->2->3->5->null。思路:用一个循环数清楚这个链表有几个元素,在循环找到倒数第n+1个元素和倒数第n个元素,然后删除就可以了。代码:/** * Defi原创 2017-03-26 22:08:27 · 440 阅读 · 0 评论 -
两两交换链表中的节点
问题描述:给一个链表,两两交换其中的节点,然后返回交换后的链表。样例:给出 1->2->3->4, 你应该返回的链表是 2->1->4->3。原创 2017-03-26 21:59:51 · 177 阅读 · 0 评论 -
链表倒数第n个节点
问题描述:找到单链表倒数第n个节点,保证链表中节点的最少数量为n。样例:给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1.思路:用循环数一下链表中元素的个数,然后再用循环找到倒数第n个结点就可以了。代码:/** * Definition of ListNode * class ListNode {原创 2017-03-26 22:13:54 · 214 阅读 · 0 评论 -
链表求和
问题描述:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。样例:给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null实现思路:新建一个链表,用一个循环将两个链表的数挨个相加取余保留,除以10进位,求和的时候加上原创 2017-03-29 21:37:52 · 171 阅读 · 0 评论 -
链表插入排序
问题描述:用插入排序对链表排序。样例:Given 1->3->2->0->null, return 0->1->2->3->null.思路:新建一个链表,按从小到大顺序排列,从原列表代码:/** * Definition of ListNode * class ListNode { * public: * int val; *原创 2017-03-26 22:28:03 · 161 阅读 · 0 评论 -
合并两个排序链表
问题描述:将两个排序链表合并为一个新的排序链表。样例:给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。解题思路:先考虑特殊情况,如果一个链表为空,直接返回另一个链表;一般情况,新建一个链表,用两个指针分别从两个链表开始迭代,将数据小的放在新链表的后面并且指针后移一位,如果某一个指针指向NUL原创 2017-03-30 16:29:07 · 163 阅读 · 0 评论 -
删除排序链表中的重复元素
问题描述:给定一个排序链表,删除所有重复的元素每个元素只留下一个。样例:给出 1->1->2->null,返回 1->2->null给出 1->1->2->3->3->null,返回 1->2->3->null解题思路:用两个指针节点一次往后迭代,其中一个在前边,另个在后边两个紧挨着,先固定一个动,另一个往后移知道碰到与前面数据不一样的的就将中间的全原创 2017-03-30 17:00:26 · 294 阅读 · 0 评论 -
链表划分
问题描述:给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。样例:给定链表 1->4->3->2->5->2->null,并且 x=3返回 1->2->2->4->3->5->null解题思路:构建两个新的链表,一个放小于x的节点,另一个放大于等于x的节原创 2017-03-30 17:15:15 · 144 阅读 · 0 评论 -
翻转链表
问题描述:翻转一个链表样例:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null解题思路:用三个指针来保留位置,将中间的next指向前一个节点,然后三个节点按原来的顺序依次后移一位,完成循环就可以了。代码:/** * Definition of ListNode * * class ListNode { *原创 2017-03-30 17:23:56 · 117 阅读 · 0 评论 -
在O(1)时间复杂度删除链表节点
在O(1)时间复杂度删除链表节点问题描述:给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。样例:给定 1->2->3->4,和节点 3,删除3 之后,链表应该变为 1->2->4。实现思路:因为给定节点在链表的中间,所以不可能用一步步迭代找到这个节点的前驱原创 2017-03-22 21:52:10 · 170 阅读 · 0 评论