单链表
文章平均质量分 70
wx20153724
这个作者很懒,什么都没留下…
展开
-
合并两个排序链表
合并两个排序链表问题描述:将两个排序链表合并为一个新的排序链表 如给出 1->3->8->11->15->NULL,2->NULL, 返回 1->2->3->8->11->15->NULL。解题思路:申请一个新结点,从两个链表头开始遍历,若遍历到l1的结点值比较小,则新结点的next指向此结点,这时l1往下继续遍历,l2不变;否则指向l2的结点,l2继续向下遍历,l1不变。以此类推。原创 2017-03-28 12:59:43 · 295 阅读 · 0 评论 -
删除排序链表中的重复元素
删除排序链表中的重复元素问题描述:给定一个排序链表,删除所有重复的元素每个元素只留下一个。 如给出 1->1->2->3->3->null,返回 1->2->3->null。解题思路:新申请一个链表空间,将给定链表的第一个结点插进去,然后遍历给定链表的每一个结点,若与新链表的最后一个结点值不等,则把此结点的值赋给新链表的下一个结点,然后继续遍历,否则直接遍历原链表不进行赋值操作。实现原创 2017-03-26 10:21:13 · 236 阅读 · 0 评论 -
翻转链表
翻转链表问题描述: 翻转一个链表 如给出一个链表1->2->3->NULL,这个翻转后的链表为3->2->1->NULL.解题思路:改变指针链的方向,让当前结点的后一结点指向当前结点,而当前结点指向它的前结点,从原链表的第一个结点开始遍历操作此步骤。实现代码:原创 2017-03-26 10:01:25 · 189 阅读 · 0 评论 -
链表插入排序
链表插入排序问题描述:用插入排序对链表排序 如给定1->3->2->0->NULL;返回0->1->2->3->NULL.解题思路:申请一个新链表,先把给定结点的第一个结点插进去,遍历之后的结点,与第一个结点比较大小,若较大则插在后面,较小则插在前面,继续遍历,在新链表中找到合适的位置插进去。实现代码: class原创 2017-03-26 09:41:24 · 326 阅读 · 0 评论 -
删除链表中倒数第n个结点
删除链表中倒数第n个结点题目描述:给定一个链表,删除链表中倒数第n个结点,返回链表的头结点 如给定1->2->3->4->5->NULL和2,返回1->2->3->5->NULL.解题思路:与返回链表中的倒数第n个结点值的那道题思路基本一样,从头到尾遍历一遍单链表,得到此链表的长度,从而得到倒数第n个结点正数为多少,然后再遍历此链表找到要删除的结点,让此结点的前结点的指针指向此结点原创 2017-03-25 16:59:24 · 322 阅读 · 0 评论 -
在O(1)时间复杂度删除链表节点
在O(1)时间复杂度删除链表节点问题描述:给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。 如给定 1->2->3->4,和节点 3,删除 3 之后,链表应该变为 1->2->4。解题思路:把要删除结点的后一结点的值赋给此结点,删除此结点的后一结点。代码实现: class原创 2017-03-25 19:05:45 · 536 阅读 · 0 评论 -
链表求和
链表求和问题描述:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。 如给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null。解题思路:申请一个新的空链表,分别从头遍历两个给定的链表,对应位置相加,然后取余放入新链表内原创 2017-03-25 17:03:31 · 236 阅读 · 0 评论 -
删除链表中指定的元素
删除链表中的元素 问题描述 :删除链表中等于给定值val的所有节点 如给定1->2->3->3->4->NULL和val=3,返回1->2->4->NULL。 解题思路 :遍历单链表,若有结点的值等于给定的值val,则让此结点前一个结点的指针指向此结点后面的结点。 实现代码 :原创 2017-03-25 11:42:59 · 1060 阅读 · 0 评论 -
链表倒数第n个结点
返回链表倒数第n个结点题目描述:找到链表中的倒数第n个结点,返回它的值 如给定3->2->1->5->NULL和2,返回1.解题思路:遍历一遍链表,计数,得到整个单链表的长度,以此得到倒数第n个结点正数为多少,再进行遍历,找到那个结点,返回。实现代码: class Solution {原创 2017-03-25 15:51:33 · 510 阅读 · 0 评论 -
两两交换链表中的结点
两两交换链表中的结点问题描述:给一个链表,两两交换其中的结点,然后返回交换后的链表。 如给定1->2->3->4->NULL;return 2->1->4->3->NULL.挑战:你的算法只能使用常数的额外空间,并且不能只是单纯的改变结点内部的值,而是需要实际的进行结点交换。 解题思路: 若给定的链表为空或者只有一个结点,则返回原链表即可;若给定的链表至少有2个结点,则需要申请三个原创 2017-03-30 16:21:26 · 579 阅读 · 0 评论 -
链表划分
链表划分问题描述:给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。 你应该保留两部分内链表节点原有的相对顺序。 如给定链表 1->4->3->2->5->2->NULL,并且 x=3 返回 1->2->2->4->3->5->NULL。解题思路:创建两个新链表,分别设为1,2;遍历给定链表,比较每个结点与给定值X值的大小,若比X小,则放入新链表1中原创 2017-03-26 10:24:18 · 227 阅读 · 0 评论