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 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 线性表(链表) -> 正文阅读

[数据结构与算法]线性表(链表)

??

?日升时奋斗,日落时自省

目录

一、链表

1.链表结构

2.链表划分

3.链表实现

3.1链表的长度(不如顺序表计算那么快)

3.2 链表的打印

?3.3链表的头插

3.4链表的尾插

3.5链表的任意位置插入

3.6链表包含值

?3.7链表删除

3.8删除链表中所有相同的节点

?3.9清空链表(防止内存溢出)


? 首先我们为什么要学习链表,上节中已经学习了ArrayList,那是因为ArrayList不能够在所有效率上都是优先的,例如,我们每次增加,删除等都是需要遍历属于数组的,也是相当浪费时间的,效率相对来说是较低的,而我们就需要另一种方式来解决该问题,链表就出来了,链表可以使增加和删除时间复杂度为O(1),达到了可观的效率。

一、链表

1.链表结构

链表顾名思义就是像锁链一样的表,锁链一样环环相扣

链表是有节点构成的,就像每一个锁链中每一个铁环

?

链表有两部分构成一部分是数据,另一部分是下一个节点地址

那看一下我们的链表的代码结构

?我将它们的地址都用蓝色的框起来,观察方便,头结点用地址连接这下一个节点的

这里是有序的吗,只是逻辑上有序,就如现在看到的

物理上是不一定有序的

基本就是这样,画的不好见谅哈

连接是指向我们想要的位置,不是按照系统给分的指定存储顺序

2.链表划分

链表以这几个点可以分开

?

那又这几个点可以分为多少种链表类型? ? ? ?可以分为八种(如下图)

?

?我们初次学习链表先以 单向? 不可循环? 无头结点的链表为先

3.链表实现

如何创建一个java中的链表结构

3.1链表的长度(不如顺序表计算那么快)

?这里解释一下下面这行代码的意思,它表示的是我们把我们需要的头结点给一个替身,让替身替我们走完这个链表而不影响我们的头结点的位置

?

3.2 链表的打印

链表的打印与计算长度是相仿的

?3.3链表的头插

代码用图解?

(1)首先创建一个新节点,传值后成为一个真正的新节点?

(2)将新节点的下一个节点连接head节点

(3)我们每次调用的head,最后node=head将head恢复到头结点的位置

3.4链表的尾插

(1)首先还是创建一个新节点

(2)这里不同于头插,尾插的时候,head不能先为空(null),所以当插入第一个时,先给头结点

(3)开始遍历当前链表至最后一个节点,该节点连接新节点的位置

3.5链表的任意位置插入

(1)插入位置的限制(不能为负值 head不能空)

(2)特殊情况:头插,尾插

(3)普通情况:找到插入节点的前一个位置

?

?

?插入的图解,先走第一步 ,再走第二步不能改变顺序,改变顺序的话那不就找不到连接0x12连接0x13的节点了

3.6链表包含值

(1)排除当前链表为空

(2)遍历当前链表值,if(cur.val==key)找到对应的值

(3)遍历完没有找到,返回false?

?3.7链表删除

(1)首先排除空链表

(2)因为是找前一个节点,所以第一个没有前一个节点,就需要把,头结点作为特殊情况处理

(3)找到我们要删除值的前一个节点

(4)判断是否有该节点

?

遍历查找当前节点,?与前面相同,就不解释了

?

?删除图解

3.8删除链表中所有相同的节点

(1)首先判断链表是否为空

(2)如何删除所有呢,全部是怎么办,设立一个前置节点,一个遍历链表的节点,下来我们图解来解释这个

(3)虽然遍历完了,但是不能删除头结点位置的值,如果恰好是头结点的位置,应该如何删除,将头结点作为特殊情况下进行删除

?

?

?

?

?

?3.9清空链表(防止内存溢出)

(1)遍历每一个节点置空 (与前面遍历是一样的,只是把值变成了null)

?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:19:25  更:2022-09-24 21:22:55 
 
开发: 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年5日历 -2024/5/19 18:34:08-

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