IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构与算法四:链表 -> 正文阅读

[数据结构与算法]数据结构与算法四:链表

一、链表(linked list)特性:

  • 链表是一种真正的动态的数据结构;(head、next)
  • 链表的数据结构属于线性结构,但是存储结构属于链式存储结构,非顺序存储,而是每个节点(node)里存下一个节点的指针
  • 使用链表可以克服数组需要预先知道数据大小的缺点,可以存储不同的数据类型,但是增加了指针域,空间开销大
  • 链表允许在链表任意位置插入node或移除node,但是不允许随机存取
  • 链表有很多类型:单向链表、双向链表及循环链表
    在这里插入图片描述二、单链表定义:
    注:节点与结点的区别:在《数据结构与算法分析》这本书中,线性结构用的是结点,而非线性结构中用的都是节点;混用也无妨。
  • 链表的数据以结点(node)来表示
  • 每个结点由元素(E e) + 指针(Node next)构成,元素的存储单元,指针连接其他结点的地址数据
  • 以结点的序列表示线性表称为线性链表(单链表),单链表是链式存储结构

在这里插入图片描述
三、单链表的操作:

思考:头结点与第一个结点的区别:
链表的第一个元素称为其第一个结点,为了方便链表的操作,引入了头结点和头指针
所谓头结点就是第一个结点前的结点,它是一个虚拟结点,它不储存数据,仅存放第一个结点的地址
而头指针就是指向第一个结点的指针,也就是说是第一个结点的地址

1.头部add:
node.next=head;
head=node;
在这里插入图片描述
2.中部add:
node.next=prev.next;
prev.next=node;
在这里插入图片描述

如果链表add需要考虑在头部还是中部位置add,则很麻烦,java为了解决此问题,引入了虚拟头结点进行优化。

3.单链表的虚拟头结点:
头结点不储存数据,只储存第一个结点的指针(地址);这样链表的新增、删除就不必区分位置是在头还是中间;
在这里插入图片描述
4.单链表curd的时间复杂度:
在这里插入图片描述
四、腾讯面试题-链表翻转:
思路我们以空间换时间,再定义一个空链表list2,借助list2进行翻转
思路一:循环取list1的尾节点,插入list尾部,时间复杂度为o(n!),不太好
思路二:遍历list1的节点,插入list头部,最后将list1的head.next指向list2的head.next,时间复杂度为o(n),推荐
在这里插入图片描述
五、案例——leetcode103题:
在这里插入图片描述
思路一:时间换空间,遍历链表,不等于6的尾插到新链表
思路二:递归,等于6返回原来,不是6返回新

六、环形链表-约瑟夫问题:
1.环形链表的定义:
引入尾节点tail,将链表的最后一个结点的next指向头结点head。
在这里插入图片描述
2.约瑟夫问题:
在这里插入图片描述

数据结构与算法更多相关内容【持续更新中】:

  • 【数据结构与算法一:时间频度和时间复杂度】: 传送门.
  • 【数据结构与算法二:数组】: 传送门.
  • 【数据结构与算法三:栈和队列】: 传送门.
  • 【数据结构与算法四:链表】: 传送门.
  • 【数据结构与算法五:哈希表-哈希函数设计原则-哈希冲突解决方案】: 传送门.
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-01-30 19:10:58  更:2022-01-30 19:12:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:54:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码