当前位置:网站首页 > C++编程 > 正文

c++单向链表的创建(c++定义一个单链表)



反转一个单链表。

示例:

LeetCode 有关链表的<a href='/tag/188'>算法</a>题目(C++)_链表

LeetCode 有关链表的算法题目(C++)_链表_02

反转从位置​​​ 到​​ 的链表。请使用一趟扫描完成反转。

示例:

输入: ​​​ 输出:​​

用善意题目迭代的方法,但要注意分两种情况讨论:(1)​​​时,需要改动头指针;(2)​​时,无需改动头指针。

LeetCode 有关链表的算法题目(C++)_链表_03

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例:

输入:​​​ 输出:​​

  • 链表的兼并是老生常谈的问题,却总是费时间完成。对于不带头结点的链表来说,需要建立一个伪头结点作为合并链表后的头结点。
  • 考虑其中一个链表为空的情况,直接返回另一个链表。
  • 定义两个动态指针指向两个链表表头,设置​​指针作为尾插法的尾指针。
  • 比较两个动态指针所指向结点值的大小,较小的值是待插入结点,方法就是尾插法。

LeetCode 有关链表的算法题目(C++)_结点_04

LeetCode 有关链表的算法题目(C++)_结点_05

给定一个链表,判断链表中是否有环。

为了表示给定链表中的环,我们使用整数 ​​​来表示链表尾连接到链表中的位置(索引从​​​ 开始)。 如果​​​ 是​​,则在该链表中没有环。

示例 1:

LeetCode 有关链表的算法题目(C++)_代码实现_06

LeetCode 有关链表的算法题目(C++)_结点_07

给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 ​​。

为了表示给定链表中的环,我们使用整数 ​​​ 来表示链表尾连接到链表中的位置(索引从 ​​​开始)。 如果 ​​​ 是 ​​,则在该链表中没有环。

说明:不允许修改给定的链表。

示例 1:

LeetCode 有关链表的算法题目(C++)_代码实现_06

LeetCode 有关链表的算法题目(C++)_代码实现_09

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例 1:

示例 2:

LeetCode 有关链表的算法题目(C++)_结点_10

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。

示例 1:

示例 2:

  • 头结点有可能发生改变,所以新建一伪头结点,方便头结点的删除操作
  • 如果重复的数字在链表结尾,for循环结束后,需要在此判断一下。

LeetCode 有关链表的算法题目(C++)_链表_11

实现一种算法,找出单向链表中倒数第 ​​个节点。返回该节点的值。

注意:本题相对原题稍作改动

示例:

说明:

  • 两种方法:
  • (1)快慢指针。让快慢指针分别指向头结点后,快指针向前移动​​​个结点,这样快慢指针就拉开​​​个结点的距离,待快指针指向​​​后,慢指针自然指向倒数第​​个结点。
  • (2)引入额外空间,用容器存储结点值,返回倒数第​​个结点值即可。

LeetCode 有关链表的算法题目(C++)_代码实现_12

LeetCode 有关链表的算法题目(C++)_代码实现_13

在​​时间复杂度和常数级空间复杂度下,对链表进行排序。

示例 1:

示例 2:

  • 使用容器。
  • 归并排序。

LeetCode 有关链表的算法题目(C++)_代码实现_14

LeetCode 有关链表的算法题目(C++)_链表_15

LeetCode 有关链表的算法题目(C++)_结点_16

插入排序算法:

示例 1:

示例 2:

  • 链表中,遇到需要在头指针前面插入数据的情况,可以添加一个伪头指针​​​,方便对头结点的更新,最后返回​​即可。
  • 算法思路就是直接插入排序。

LeetCode 有关链表的算法题目(C++)_链表_17

合并​​个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。

示例:

  • 定义一个归并两个链表的算法。再次求解容器中所有链表的归并。

LeetCode 有关链表的算法题目(C++)_结点_18

LeetCode 有关链表的算法题目(C++)_代码实现_19

LeetCode 有关链表的算法题目(C++)_代码实现_20

维护当前每个链表没有被合并的元素的最前面一个,​​​个链表就最多有 ​​​ 个满足这样条件的元素,每次在这些元素里面选取​​属性最小的元素合并到答案中。在选取最小元素的时候,我们可以用优先队列来优化这个过程。

LeetCode 有关链表的算法题目(C++)_结点_21

到此这篇c++单向链表的创建(c++定义一个单链表)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • dhclient固定ip(dhcp 固定ip)2026-01-24 20:45:06
  • 进程控制块PCB的作用(进程控制块pcb的作用是什么)2026-01-24 20:45:06
  • Cp1515n设置中文(cp1515n说明书)2026-01-24 20:45:06
  • win32s(win32softcnapp怎么出现的)2026-01-24 20:45:06
  • c++ 条件变量 锁(c++条件变量使用)2026-01-24 20:45:06
  • 操作系统基本操作docx(操作系统基本操作教案)2026-01-24 20:45:06
  • msvcp140.dll丢失怎样修复视频(msvcp140.dll丢失原因)2026-01-24 20:45:06
  • excel中pivot怎么用(excel pivottable)2026-01-24 20:45:06
  • Cp1515n设置中文(cp1300设置中文)2026-01-24 20:45:06
  • msvcp140-1.dll是什么(msvcp140_1.dll)2026-01-24 20:45:06
  • 全屏图片