数据结构—链表
Apollo-yyy
考研失败的华子5G工程师一枚
展开
-
1032 Sharing
题目大意: 两个链表如果存在公共后缀,输出公共后缀的首字母的地址,否则输出-1。 解题思路: 用结构图保存链表节点,根据输入的链表节点首先跑一遍第一个链表,把跑过的节点都标记掉。然后跑一下第二个链表,如果遇到被标记的节点证明来到了公共后缀的首字母。 代码如下: #include<iostream> #include<cstdio> #include&amp原创 2019-02-01 22:23:32 · 149 阅读 · 0 评论 -
1052 Linked List Sorting
题目大意: 给输入的列表进行排序。 解题思路: 一开始直接就拿结构体排序做了,一边写一边怀疑题目和链表有啥关系,然后有两个测试点过不去。之后意识到可能输入的节点有的不在给定头指针开始的链表上,于是开了一个结构体保存筛选过后的节点,继续结构体排序。注意有可能一个有效节点也没有,那么就只输出“0 -1”。 代码如下: #include<iostream> #include<cstd...原创 2019-02-07 21:29:48 · 188 阅读 · 0 评论 -
1074 Reversing Linked List
题目大意: 给你一个链表,每隔k个节点翻转一下,输出翻转后的结果。 解题思路: 如果链表的长度正好是K的整数倍则全部要分段翻转,否则末尾的余数部分无需翻转。重点是翻转部分首尾指针的修改,可以定义一个变量保存未翻转前尾指针的下一个节点地址,每间隔K个节点修改首指针的指向地址。其他节点就反向修改即可。 代码如下: #include<iostream> #include<cstdio...原创 2019-02-08 11:33:04 · 260 阅读 · 0 评论 -
1097 Deduplication on a Linked List
题目大意: 给你一个链表。只保留第一个出现的且节点键值的绝对值不重复的节点(比如15——(-15)只保留15,-15删除),被删除的节点依次构建一个新链表。最后输出删除后得到的链表和被删除节点组成的新链表。 解题思路: 想了一种投机取巧的方法,就是用动态数组保存节点,被删除的节点放在一个新的数组中,这样无需构建链表和操作指针,非常容易理解。 代码如下: #include<iostream&...原创 2019-02-09 17:17:30 · 314 阅读 · 1 评论 -
1133 Splitting A Linked List
题目大意: 给你一个链表,要求重新排定元素顺序,规则是先把负数放在前面,然后大于等于0小于k的数放在k前,大于k的放在k后。 解题思路: 根据题意遍历三次链表分别处理这三种数据构建新链表即可。 代码如下: #include<iostream> #include<cstdio> #include<algorithm> using namespace std; s...原创 2019-02-27 10:58:51 · 278 阅读 · 0 评论