美文网首页
[数据结构]第二章线性表(3)——单链表

[数据结构]第二章线性表(3)——单链表

作者: 不会秃头的阿Kim | 来源:发表于2020-06-19 17:41 被阅读0次

单链表

image-20200618221439465 image-20200618221516210

什么是单链表?

image-20200618221658525

单链表的定义

image-20200618221959788

别名

image-20200618222203154 image-20200618222313544

注释:或者可以理解为指向头节点的指针既可以表示整个单链表也可以表示头节点,为了便于区分才建议使用 typedef 进行重命名,以方便区别其不同的含义

头插法建立单链表

image-20200619095117732

单链表的基本操作

单链表的初始化

不带头节点的单链表的初始化

image-20200619095400757

带头节点的单链表的初始化

image-20200619095545238

两者区别是什么?

image-20200619095738329

总结

image-20200619095821536

插入和删除

image-20200619104612536

插入

按位序插入(带头节点的单链表)
image-20200619105030154

具体实现

分析在表头插入

image-20200619105401211

分析为什么不能颠倒

image-20200619105451377

分析在表中插入

image-20200619105800111

分析在表尾插入

image-20200619110039686

分析插入位置超出表长

image-20200619110159253

总结

image-20200619110309541
按位插入(不带头节点)
image-20200619110418752

具体实现

image-20200619110547637

结论:不带头节点的单链表,写代码更不方便,除非特别声明,默认推荐使用带头节点的实现方式,还有要注意在考试中带头、不带头都有可能考察,注意审题。

指定节点的后插操作
image-20200619111032277

指定节点的前插操作

通过传入头指针实现前插

image-20200619111607840

先进行后插,然后交换前后数据,以此实现前插

image-20200619111716141 image-20200619111814873

删除

带有头节点版本
image-20200619111915877

具体实现

image-20200619135048885
删除指定结点
image-20200619135226089

如果P是最后一个节点,咋办?

只能从表头表头依次寻找前驱,时间复杂度O(n)

image-20200619135401028

单链表的局限性:无法逆向检索!!

总结

image-20200619135623242

查找

按位查找(带头节点)
image-20200619152704151
按值查找(带头节点)
image-20200619153147639
求表的长度(带头节点)
image-20200619153411974

总结

image-20200619153525681

单链表的建立方法

image-20200619153742876

PS:找不到对象就娶一个数据元素吧!哈哈

尾插法

第一种方法:

image-20200619154012867

问题:时间复杂度太高!!可以用一个指针记录最后一个数据元素的位置来优化时间。

优化之后:

image-20200619172815577

头插法

image-20200619172945304

具体实现:

image-20200619173800669

总结

image-20200619173925151

相关文章

  • 数据结构--单链表

    数据结构--单链表 单链表:单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中...

  • 数据结构(类C)

    第二章:线性表 一、线性表的基本运算在顺序表上的实现 1、插入 ★★★ 2、删除 ★ 3、定位 ★ 3、单链表的类...

  • 专项练习数据结构之链表

    1.链表:单链表,双链表,循环链表 2.单链表 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表...

  • 数据结构与算法-线性表

    1 单向链表 1.1 线性表-单链表节点长相如下图: 1.2 线性表-单链表逻辑结构如下图: 1.3 线性表-单链...

  • 数据结构与算法相关

    第二章 数据结构与算法相关 1.常用的数据结构有哪些? 数组、栈、队列、链表(单链表、双向链表、循环链表)、树、散...

  • 插入任意数据形成有序单链表并逆置单链表

    可直接运行的完整C语言版有序单链表的生成和逆置标签:数据结构、线性表、带头结点的单链表、逆置单链表欢迎与喜欢数据结...

  • 数据结构(链表)的应用——单向链表和双向链表(LinkedLis

    链表是线性表的其中之一,线性表又是我们要学的数据结构的一部分,所以非常有学习价值,我们今天专门分析单链表和双链表。...

  • 数据结构和算法(6)队列的操作和实现

    数据结构和算法(1)线性表实现 数据结构和算法(2)单向循环链表的创建插入删除实现 数据结构和算法(3)双向链表与...

  • PHP 实现数据结构

    参考诸多视频和文章,主要通过PHP 实现线性表的顺序存储结构,单链表,静态链表,双向链表以及二叉树等数据结构,代码...

  • 自己动手写数据结构之单链表

    单链表实现 1 定义 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据...

网友评论

      本文标题:[数据结构]第二章线性表(3)——单链表

      本文链接:https://www.haomeiwen.com/subject/pwlbxktx.html