链表
文章平均质量分 69
zhangchengcheng1997
这个作者很懒,什么都没留下…
展开
-
合并两个排序链表
1、问题描述 将两个排序链表合并为一个新的排序链表。给出 1->3->8->11->15->null,2->null, 返回1->2->3->8->11->15->null。2、实现思路3、代码/** * Definition of ListNode * class ListNode { * public: * int val; * L原创 2017-03-27 22:47:03 · 249 阅读 · 0 评论 -
链表倒数第n个节点
1、问题描述 找到单链表倒数第n个节点,保证链表中节点的最少数量为n。给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1.2、实现思路 创建一个新指针x,工作指针x和累加器count初始化,得到链表长度。倒数第n个节点为第count-n+1个节点,创建一个新的节点u找到然后返回。3、代码 /** * Definition of原创 2017-03-22 21:34:52 · 151 阅读 · 0 评论 -
删除链表中倒数第n个节点
1、问题描述 给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。给出链表1->2->3->4->5->null和 n = 2.删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.2、实现思路 先计算链表的长度,用for循环找到要删的节点, 要考虑链表长度3、代码/** * Definition of Li原创 2017-03-22 22:17:45 · 134 阅读 · 0 评论 -
在O(1)时间复杂度删除链表节点
1、给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。2、3、/** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { *原创 2017-03-22 22:47:25 · 290 阅读 · 0 评论 -
删除排序链表中的重复元素
1、问题简介 给定一个排序链表,删除所有重复的元素每个元素只留下一个。给出 1->1->2->null,返回 1->2->null给出 1->1->2->3->3->null,返回 1->2->3->null2、实现思路 用两个节点,如果两个元素相同,同时向后移一位。3、代码/** * Definition of ListNode * class原创 2017-03-22 22:50:44 · 162 阅读 · 0 评论 -
删除链表中的元素
1、问题描述 删除链表中等于给定值val的所有节点。给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。2、实现思路 遍历链表,若值等于val,此结点删除,否则依次检验。3、代码/** * Definition for singly-linked list. * struct L原创 2017-03-26 12:49:21 · 205 阅读 · 0 评论 -
翻转链表
1、问题描述 翻转一个链表,给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null2、实现思路 将后面的元素依次前移,head后移与最后的元素交换位置,再成为前移元素的下一个。3、代码/** * Definition of ListNode * * class ListNode { * public: *原创 2017-03-26 13:21:34 · 129 阅读 · 0 评论 -
链表求和
1、问题描述 你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null2、实现思路 有3种情况,第一:两个链表一样长;第二:两个链表非空但不一样长;第三:有原创 2017-03-26 13:23:42 · 1159 阅读 · 0 评论 -
链表插入排序
1、问题描述 用插入排序对链表排序,Given 1->3->2->0->null, return 0->1->2->3->null2、实现思路 链表是从小到大排列的,若前一个比后一个大,后一个需要从前面找到合适的位置重新排序,用p、q代表前后相邻的节点,当p>q,时用一个新节点从头找到最后一个比q小的,将p插到其后,否则p、q依次向后移动。3、代码/**原创 2017-03-26 15:10:56 · 166 阅读 · 0 评论 -
链表总结
1、在O(1)时间复杂度删除链表节点 将给定节点删除,让其值等于其下一个的值,此时此节点的指针指向其后两个节点的位置。2、链表倒数第n个节点 删除链表倒数第n个节点 先用累加器计算出链表中元素的个数,然后从头结点开始找到倒数第n个节点(即第count-n+1个节点)。删除即再结合O(1)时间复杂度删除链表节点。3、删除链表中的元素 从第一个元素开始原创 2017-03-30 16:02:12 · 341 阅读 · 0 评论 -
两两交换链表中的节点
1、问题描述 给一个链表,两两交换其中的节点,然后返回交换后的链表。给出 1->2->3->4, 你应该返回的链表是 2->1->4->3。2、实现思路 若链表为空或只有一个元素直接返回,两两交换,先记下第一个结点的值,将后一个节点的值赋给前一个节点,后一个节点等于记下的前一个节点的值。然后节点后移两个。3、代码/** * Definition for原创 2017-03-27 23:06:15 · 201 阅读 · 0 评论 -
链表划分
1、问题描述 给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。给定链表 1->4->3->2->5->2->null,并且 x=3,返回 1->2->2->4->3->5->null2、实现思路 创建两个链表,leftDummy和rightDummy分别代表小于和大于等于val的链表,head原创 2017-03-26 16:27:00 · 447 阅读 · 0 评论