• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2024-09-12 20:28 Aet 隐藏边栏 |   抢沙发  9 
文章评分 2 次,平均分 5.0

单链表

概述

  1. 单链表是一种常见的数据结构,由一组节点(Node)组成,每个节点包含数据部分和指向下一个节点的指针(通常称为 next 指针)
  2. 单链表的头节点指向第一个元素,而尾节点的 next 指针指向 nullptr(空指针),表示链表的结束

单链表的节点定义

单链表的基本操作

  1. 创建单链表
    1. 创建一个空的单链表,即设置头指针为 nullptr

  1. 插入到头部(头插法)
    1. 在链表的头部插入一个节点

  1. 插入到尾部(尾插法)
    1. 在链表的尾部插入一个节点

  1. 插入到指定位置
    1. 在链表的指定位置(索引)插入一个节点,假设索引从 0 开始

  1. 删除头部节点
    1. 删除链表的第一个节点

  1. 删除尾部节点
    1. 删除链表的最后一个节点

  1. 删除指定位置的节点
    1. 删除链表中的指定位置(索引)的节点

  1. 查找操作
    1. 查找链表中是否包含某个值,返回该值第一次出现的索引位置

  1. 遍历操作
    1. 遍历并打印链表中的所有节点

  1. 销毁链表
    1. 删除链表中的所有节点,释放内存

单链表其他操作

  1. 反转单链表
    1. 迭代法

  1. 检测单链表是否有环
    1. 该方法使用两个指针:一个慢指针每次走一步,快指针每次走两步
    2. 如果链表中有环,两个指针最终会相遇;如果没有环,快指针会到达链表的末尾

  1. 合并两个有序链表
    1. 合并两个有序链表,使结果链表仍然保持有序

  1. 找到单链表的中间节点
    1. 使用快慢指针找到链表的中间节点

  1. 单链表归并排序
    1. 单链表的插入排序时间复杂度为n^2
    2. 归并排序的时间复杂度为n log n

双链表

概述

  1. 双链表是一种链表数据结构,其中每个节点不仅有一个指向下一个节点的指针(next),还有一个指向前一个节点的指针(prev
  2. 这使得双链表在遍历、插入和删除操作上比单链表更加灵活

双链表的节点定义

双链表的基本操作

  1. 创建双链表

  1. 插入到头部(头插法)

  1. 插入到尾部(尾插法)

  1. 插入到指定位置
    1. 在链表的指定位置(索引)插入一个节点,假设索引从 0 开始

  1. 删除头部节点
    1. 删除链表的第一个节点

  1. 删除尾部节点
    1. 删除链表的最后一个节点

  1. 删除指定位置的节点
    1. 删除链表中的指定位置(索引)的节点

  1. 查找操作
    1. 查找链表中是否包含某个值,返回该值第一次出现的索引位置

  1. 遍历操作

  1. 反向遍历

  1. 销毁链表

双链表其他操作

  1. 反转双链表
    1. 反转双链表是将链表的 nextprev 指针互换,使得链表的方向完全反转,即头节点变为尾节点,尾节点变为头节点

  1. 检测是否有环

  1. 简单合并两个双链表

  1. 合并两个有序双链表

  1. 找到双链表的中间节点

  1. 双链表归并排序

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2024-12-31
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享