![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
liu_shijia
这个作者很懒,什么都没留下…
展开
-
翻转链表
问题描述:翻转一个链表样例:给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null实现思路:原创 2017-03-29 21:36:30 · 175 阅读 · 0 评论 -
两两交换链表中的节点
问题描述:给一个链表,两两交换其中的节点,然后返回交换后的链表。实现思路:1.先判断链表开始结点是否为空,若是,直接返回0; 2.若不是,重复执行下述操作,直到p为空或p的下一个结点为空。 (1)定义一个工作指针p,将head赋值给p; 定义变量x,暂存结点p的数据原创 2017-03-26 10:54:38 · 350 阅读 · 0 评论 -
在O(1)时间复杂度删除链表节点
问题描述:给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在O(1)时间复杂度删除该链表节点。样例:给定 1->2->3->4,和节点 3,删除 3 之后,链表应该变为 1->2->4。实现思路:因为要删除的结点位于链表的中间,并且只是给定了要删除的元素的值,所以不能从头开始遍历找到这个元素的前驱。那么就可以把这个等待被删除的元素的后继的值赋给这个元素,然后让它的指针域指原创 2017-03-26 13:52:37 · 405 阅读 · 0 评论 -
删除链表中的元素
问题描述:删除链表中等于给定值val的所有节点。样例:给出链表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回删除3之后的链表:1->2->4->5。实现思路:因为返回时需要返回头指针,而在查找链表中等于给定值val的所有节点时,必然需要一个指针进行遍历,所以重新申请了一个结点dummy,并让dummy的next 域指向head,然后将dummy赋给原创 2017-03-26 16:33:38 · 1552 阅读 · 1 评论 -
链表倒数第n个节点
问题描述:找到单链表倒数第n个节点,保证链表中节点的最少数量为n。样例:给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1.实现思路:解决这个问题,首先要求出单链表的长度,用一个while循环,将单链表扫描一遍即可实现;然后要返回倒数第n个节点的值,因为是单链表,所以只能从前往后查找,而倒数第n个节点的位置是(长度-n+1),然后接下来的操作就是单链表中的原创 2017-03-27 20:30:49 · 258 阅读 · 0 评论 -
链表插入排序
问题描述:用插入排序对链表排序样例:Given 1->3->2->0->null, return 0->1->2->3->null实现思路:本题要用插入排序对链表进行排序,首先考虑特殊情况,当链表是空的时候,直接返回0;若不是,就申请一个新的链表,首先将给定链表的第一个节点插进去,然后遍历它后面的节点,若比它小,则插在前面,否则,插在后面。实现代码: * Definition of原创 2017-03-27 21:41:16 · 181 阅读 · 0 评论 -
删除排序链表中的重复元素
问题描述:给定一个排序链表,删除所有重复的元素每个元素只留下一个。样例:给出 1->1->2->null,返回 1->2->null 给出 1->1->2->3->3->null,返回 1->2->3->null实现思路:为了实现操作,我设置了两个指针变量p和q,让p指向开始结点,让q指向第二个结点,即这两个指针一前一后分别指向两个数据元素。然后重复执行下述操原创 2017-03-27 21:52:11 · 297 阅读 · 0 评论 -
合并两个排序链表
问题描述:将两个排序链表合并为一个新的排序链表样例:给出 1->3->8->11->15->null,2->null, 返回 1->2->3->8->11->15->null。实现思路:这个题首先要建一个新链表,对于新链表的头结点就是L1或L2中较小的那一个,在比较完头结点之后,原创 2017-03-30 21:41:46 · 253 阅读 · 0 评论 -
删除链表中倒数第n个节点
问题描述:给定一个链表,删除链表中倒数第n个节点,返回链表的头节点样例:给出链表1->2->3->4->5->null和 n = 2. 删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.实现思路:这个问题跟“链表倒数第n个节点”类似,此问题要返回头结点,所以重新定义了一个新结点,并让开始结点赋值给它,以便返回。 首先考虑了链表中只原创 2017-03-30 22:01:59 · 229 阅读 · 0 评论 -
链表求和
问题描述:你有两个用链表代表的整数,其中每个节点包含一个数字。数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头。写出一个函数将两个整数相加,用链表形式返回和。样例:给出两个链表 3->1->5->null 和 5->9->2->null,返回 8->0->8->null实现思路:由题意整数在链表中的存储是原来整数中相反的顺序,所以考虑申请一个新链表,让原来两个链表对应位置相原创 2017-03-31 13:58:48 · 275 阅读 · 0 评论 -
链表划分
问题描述:给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对顺序。样例:给定链表 1->4->3->2->5->2->null,并且 x=3 返回 1->2->2->4->3->5->null实现思路:这个题要搞懂题意,将链表划分并且不改变原来元素之间的相对顺序。我总体的思路是,建原创 2017-03-31 15:00:15 · 287 阅读 · 0 评论 -
链表做题总结
学习数据结构,重拾C++,对我来说心里真的很没底,以前的C++没认真学,就是擦着及格线过的。自己基础薄弱,我当时就担心会听不明白,但是上课听的时候,感觉理解的还可以。 对于链表这方面知识,通过做题,我的一些总结和想法如下。首先我想到的就是要掌握好链表基础的一些操作,插入、删除、按位查找、按值查找等。一些题目都是这些基础操作的变化。 其次就是指针的链接问题,这个很重要,也是我原创 2017-03-31 15:26:25 · 222 阅读 · 0 评论