【数据结构】线性表-单链表

这篇具有很好参考价值的文章主要介绍了【数据结构】线性表-单链表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

编程语言:C++

前言:

  • 节点:节点是链表的一个基本单元,包含两部分——数据域和指针域,数据域用于存储数据,指针域存储下一个节点的地址,形成链结。
    【数据结构】线性表-单链表
  • 什么是单链表:n个节点链结成一个链表,即为线性表(a1,a2,a3……)的链式存储结构,每个节点只包含一个指针域的链表叫做单链表。
  • 链表组成:头节点、头指针、节点。头结点顾名思义就是第一个节点,并且头结点的数据域一般为空,有时用来存储链表的节点数等信息,在链表中,头结点不是必需要素。头指针就是指向头结点的指针,头指针一般冠以链表的名字,并且头指针是链表的必需要素。
  • 空链表:没有任何有效数据的节点的链表。例:
    【数据结构】线性表-单链表
  1. 单链表的创建
    创建单链表之前先要创建节点:
    【数据结构】线性表-单链表

然后开始创建链表:
我们将创建链表的功能包装成一个函数,参数如下:
第一个参数是我们在函数外创建的一个头指针(也即一张空链表(包含头结点)),第二个参数是我们希望链表所包含的节点个数
【数据结构】线性表-单链表

在此基础上,我们有两种创建链表的方式:头插法、尾插法。

头插法:
原理如下:将每次创建的新节点插入头节点和上一个创建的节点之间。
【数据结构】线性表-单链表
步骤:

  • 声明一个指针p(用来生成新节点),和一个计数器变量i
  • 初始化一张空链表(也就是创建一个头指针),让头结点指针指向NULL
  • 循环:
    ①生成一个新节点赋给p
    ②给节点赋值(例子中生成一个随机数存入p->data)
    ③将节点插入头结点和上一节点之间

代码实现:
【数据结构】线性表-单链表

尾插法:
原理如下:每次创建的新节点插在上一个节点后面(链表尾部)。
【数据结构】线性表-单链表

步骤:

  • 声明一个指针p(用来生成新节点),声明一个尾指针r(方便往链表尾部插入新节点),一个计数器变量i
  • 初始化一张链表(也就是创建一个头指针),让头结点的指针指向NULL
  • 让尾指针r指向头结点
  • 循环:
    ①生成一个新节点赋给p
    ②给节点赋值
    ③将节点插入链表尾部
    ④保持尾节点的指针指向NULL(方便作为查找等操作的判断标志)

代码实现:
【数据结构】线性表-单链表

  1. 链表数据的读取
    读取指定节点存取的数据,必需从头结点开始遍历链表,直到找到指定节点然后读取数据。
    步骤:
    ①创建一个指针p(用来遍历链表),和一个计数器i(p当前指向的节点)
    ②让p指向第一个节点开始遍历链表,同时i自增
    ③如果找到了指定节点,则读取节点数据,并反馈信息(以1为例)
    ④如果没找节点,则反馈信息(以返回0为例)
    代码实现:
    【数据结构】线性表-单链表

  2. 单链表数据的插入
    遍历链表到达指定位置后将数据插入即可。
    步骤:
    ①创建指针p(遍历链表),创建指针s(插入的节点),创建计数器变量i
    ②遍历链表,到达指定位置将s插入
    代码实现:
    【数据结构】线性表-单链表

  3. 单链表数据的删除
    用一个指针遍历到达指定节点处,然后进行删除操作(改变节点指针指向,绕过待删除节点即可),并索回所删除的数据。
    步骤:
    ①创建一个指针p遍历链表,创建一个指针辅助删除,一个计数器变量i
    ②遍历至指定位置进行删除操作
    代码实现:
    【数据结构】线性表-单链表
    补充:其实完全可以不需要创建指针q,“q = p->next;p->next = q->next;”两步可用“p->next = p->next->next”替代,效果相同。

文章来源地址https://www.toymoban.com/news/detail-844360.html

  • 涉及到改变链表数据的操作时,应当使用引用传递
  • 对于链表的各种操作并非一成不变,应当根据实际情况灵活变换

到了这里,关于【数据结构】线性表-单链表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据结构: 线性表(无哨兵位单链表实现)

    在介绍链表之前, 先回顾一下顺序表的优缺点 顺序表的优点 : 存储密度高: 无需为表示表中元素之间的逻辑关系而增加额外的存储空间. 随机访问: 通过首地址和元素序号可以在时间 O ( 1 ) O(1) O ( 1 ) 内找到指定的元素. 命中率高:CPU每次取一定大小空间放入缓存,连续的空间命

    2024年02月14日
    浏览(38)
  • 【数据结构之线性表】单链表实现图书管理系统

            本次实验是在DEV C++软件上进行实现的。语言采用的是c++语言,但在整体上与c语言大致相似(不管用什么语言实现,思想是不变的)。         此次实现的整体思路:首先定义图书这个抽象数据类型,并且定义节点抽象数据类型(根据这些抽象数据类型对下面的数

    2024年02月08日
    浏览(41)
  • 【数据结构】线性表之单链表(讲解实现——带动图理解)

    单链表的优点 1.头部和中间插入或删除数据效率高,无需挪动。 2.按照需求申请释放空间,无需担心空间不够用。 单链表的缺点 1.不可以进行下标随机访问。 2.复杂度是O(n) 3.反向遍历困难 单链表是线性表的一种,单链表是链式存储的线性表,不同于单链表, 链表在内存空间

    2024年02月06日
    浏览(50)
  • 数据结构三:线性表之单链表(带头结点单向)的设计与实现

            线性表的链式存储结构正是所谓的单链表,何谓单链表?通过地址将每一个数据元素串起来,进行使用,这可以弥补顺序表在进行任意位置的插入和删除需要进行大量的数据元素移动的缺点,只需要修改指针的指向即可;单链表的种类又可划分为很多种,本篇博客详

    2024年02月19日
    浏览(62)
  • 数据结构--线性表(顺序表、单链表、双链表、循环链表、静态链表)

    前言  学习所记录,如果能对你有帮助,那就泰裤辣。 目录 1.线性表概念 定义 基本操作 2.顺序表 定义 顺序表的实现--静态分配 动态分配 顺序表的特点 顺序表的插入和删除 顺序表的查找 按位查找  按值查找 3.单链表 定义 单链表的初始化 不带头节点的单链表 带头节点的单

    2024年02月11日
    浏览(63)
  • 【玩转408数据结构】线性表——单链表的定义以及增删改查(线性表的链式表示 上)

            到这里我们已经了解到线性表是具有 相同数据类型 的 有限个数据元素 序列,而线性表的顺序存储也就是顺序表,顺序表的存储形式十分直观,我们在实现时使用数组进行实现,但顺序表在插入或者删除元素时需要移动大量元素,那么怎么样才能在插入删除元素时不

    2024年02月21日
    浏览(57)
  • 单链表(数据结构)(C语言)

    这里特指无哨兵位单向非循环链表 目录 背景 概念 单链表的实现 前景提示 单链表的结构体定义 单链表的打印 关于为什么不断言phead 关于单链表的逻辑结构和物理结构 单链表的尾插 关于为什么要用到二级指针 关于尾插的本质 关于找尾整个过程的解释 关于为什么打印单链表

    2023年04月22日
    浏览(77)
  • C语言:数据结构(单链表)

    概念:链表是一种 物理存储结构上非连续 、非顺序的存储结构,数据元素的 逻辑顺序 是通过链表的 指针链接 次序实现的。 链表的结构跟火车车厢相似,淡季时车次的车厢会相应减少,旺季时车次的车厢会额外增加几节。只需要将火车里的某节车厢去掉/加上,不会影响其

    2024年04月26日
    浏览(39)
  • 【C语言】数据结构-单链表

    主页:114514的代码大冒险 qq:2188956112(欢迎小伙伴呀hi✿(。◕ᴗ◕。)✿ ) Gitee:庄嘉豪 (zhuang-jiahaoxxx) - Gitee.com 文章目录 目录 文章目录 前言(链表的优势) 一、单链表是什么 二、单链表操作的具体代码实现 1.准备工作 2.打印链表 2.尾插(在链表末端添加数据) 3、头插(

    2024年02月02日
    浏览(46)
  • 数据结构——单链表(C语言)

    在这⼀条⼗分漫长的路上,我⾛过阳关⼤道,也⾛过独⽊⼩桥。路旁有深⼭⼤泽,也有平坡宜⼈;有杏花春⾬,也有塞北秋风;有⼭重⽔复,也有柳暗花明;有迷途知返,也有绝处逢⽣。——《⼋⼗述怀》 目录 一 . 什么是链表? 二 . 实现单链表 (1)创建相关源文件和头文

    2024年02月08日
    浏览(116)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包