数据结构(九)——单链表的基本操作

😀前言
单链表是一种常见的数据结构,它由一系列结点组成,每个结点包含数据元素和指向下一个结点的指针。在本篇文章中,我们将讨论单链表的基本操作,包括初始化、销毁、清空、求表长、按值查找、插入和删除等操作。这些操作是使用单链表时常常需要用到的基本操作,对于理解和应用单链表具有重要意义。

🏠个人主页:尘觉主页

💕欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看🥰
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦😊

文章目录

  • 数据结构(九)——单链表的基本操作
    • 单链表的初始化
    • 销毁单链表
    • 清空单链表
    • 求表长
      • 总结:常用操作
        • [算法步骤]
    • 单链表的按值查找——根据特定数据获取该数据所在地址
      • 算法步骤
      • [算法分析]
    • 单链表的插入
      • 思考一下
    • 删除第i个结点
      • [算法步骤]
    • 😄总结

数据结构(九)——单链表的基本操作

单链表的初始化

① 新生成的新结点作为头结点,用头指针L指向头结点

② 头结点的指针域置空

image-20230918141044391

销毁单链表

image-20230918141120114

清空单链表

链表仍然存在将其置空(头结点和头指针仍然存在)

image-20230918141220997

求表长

从首元结点开始依次计数直至最后一个元素

image-20230918141346630

总结:常用操作

指向头结点 p=L;
指向首元结点p=L->next;i=1;
指向下一结点p=p->next;

image-20230918141412550

[算法步骤]

①用指针p指向首元结点,用j做计数器初值赋为1。

②从首元结点开始依次顺着链域next向下访问,只要指向当前结点的指针p不为空(NULL), 并且没有到达序号为i的结点,则循环执行以下操作:

• p指向下一个结点;• 计数器j相应加1。

③退出循环时,如果指针p为空,或者计数器j>i,说明指定的序号i值不合法大于表长n或小于1), 取值失败返回ERROR;否则取值成功,

此时j=i时,p所指的结点就是要找的第l个结点,用参数e保存当前结点的数据域,返回OK。

image-20230918141925812

单链表的按值查找——根据特定数据获取该数据所在地址

算法步骤

  1. 从第1个节点依次与e比较

  2. 如果找到一个与e值相等的数据,则返回在列表中的地址

  3. 如果查遍整个链表都没有找到和一直相等的元素停止循环返回0/NULL

image-20230918142005204

[算法分析]

该算法的执行时间与待查找的值e相关, 其平均时间复杂度分析类似于算法2.7,也为O(n)。

单链表的插入

image-20230918142141982

思考一下

①②步骤能互换吗?

答案是不能:直接换顺序执行②找不到继ai结点了,需要先用p指向ai-1结点再用用q指针指向ai结点

image-20230918142415764

删除第i个结点

[算法步骤]

  1. 找到第i-1个结点,如果有必要的话保存ai的值且将地址存于在q中以备释放

  2. 找到ai+1!的位置赋值给,ai-1的next域

  3. 释放ai

image-20230918142609250
p − > n e x t = p − > n e x t − > n e x t ; p->next = p->next->next; p>next=p>next>next;
在这里插入图片描述

😄总结

单链表的基本操作是在使用单链表时必须掌握的知识点。初始化操作用于创建一个空链表,并将头指针指向头结点;销毁操作用于释放链表占用的内存空间;清空操作将链表中的所有结点清空,但保留头结点和头指针;求表长操作用于计算链表中结点的个数;按值查找操作用于根据特定的数据查找该数据在链表中的位置;插入操作用于向链表中插入新的结点;删除操作用于删除链表中的指定结点。

通过掌握这些基本操作,我们可以方便地对单链表进行操作和管理,实现各种功能和应用。同时,这些操作也是理解和学习其他高级链表结构和算法的基础。因此,深入理解和熟练掌握单链表的基本操作对于学习和应用数据结构非常重要。希望本文能够对读者在学习和使用单链表时提供一些帮助和指导。

😁热门专栏推荐
想学习vue的可以看看这个

java基础合集

数据库合集

redis合集

nginx合集

linux合集

手写机制

微服务组件

spring_尘觉

springMVC

mybits

等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持

🤔欢迎大家加入我的社区 尘觉社区

文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/526965.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NGINX源码安装详细配置文档

NGINX源码安装详细配置文档 一、基础Linux指令 查看nginx进程是否启动:ps -ef | grep nginx 关闭防火墙:systemctl stop firewalld 开放80端口:firewall-cmd --zonepublic --add-port80/tcp --permanent 关闭80端口:firewall-cmd …

AJAX-HTTP协议

文章目录 HTTP协议请求报文响应报文接口文档 HTTP协议 规定了浏览器发送及服务器返回内容的格式 请求报文 浏览器按照HTTP协议要求的格式,发送给服务器的内容 组成部分: 1.请求行:请求方法,URL,协议 2.请求头&#…

数据结构(二)——线性表(顺序表)

二、线性表 2.1线性表的定义和基本操作 2.1.1 线性表的基本概念 线性表:是具有相同数据类型的 n 个数据元素的有限序列。(Eg:所有的整数按递增次序排列,不是顺序表,因为所有的整数是无限的)其中n为表长,当n0时线性表是一个空表…

【NR技术】 3GPP支持无人机服务的关键性能指标

1 性能指标概述 5G系统传输的数据包括安装在无人机上的硬件设备(如摄像头)收集的数据,例如图片、视频和文件。也可以传输一些软件计算或统计数据,例如无人机管理数据。5G系统传输的业务控制数据可基于应用触发,如无人机上设备的开关、旋转、升…

PostGIS 中的 K-Means 聚类操作及应用

K-Means算法: K-means 是数据科学和商业的基本算法。让我们深入了解一下。 1. K-means是一种流行的用于聚类的无监督机器学习算法。它是用于客户细分、库存分类、市场细分甚至异常检测的核心算法。 2. 无监督:K-means 是一种无监督算法,用于…

[蜥蜴书Chapter2] -- 创建测试集

目录 一、规则 二、方法 1、seed 2、identifier 1)选取一个身份号 2)选取一定比例的身份号作为测试集 3)身份号的选取: 3、利用scikit-learn: 1) 随机生成: 2)注:分类 3&a…

【C++】深度解剖多态

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:了解什么是多态,熟练掌握多态的定义&a…

STM32之串口中断接收UART_Start_Receive_IT

网上搜索了好多,都是说主函数增加UART_Receive_IT()函数来着,实际正确的是UART_Start_Receive_IT()函数。 —————————————————— 参考时间:2024年3月9日 Cube版本:STM32CubeMX 6.8.1版本 参考芯片&#xff1a…

【牛客】VL65 状态机与时钟分频

描述 题目描述: 使用状态机实现时钟分频,要求对时钟进行四分频,占空比为0.25 信号示意图: clk为时钟 rst为低电平复位 clk_out 信号输出 Ps 本题题解是按照1000的状态转移进行的,不按照此状态进行,编译器…

【开源】SpringBoot框架开发教学资源共享平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 类图设计3.3 数据库设计3.3.1 课程档案表3.3.2 课程资源表3.3.3 课程作业表3.3.4 课程评价表 四、系统展…

Vue.js+SpringBoot开发高校学生管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生管理模块2.2 学院课程模块2.3 学生选课模块2.4 成绩管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学生表3.2.2 学院课程表3.2.3 学生选课表3.2.4 学生成绩表 四、系统展示五、核心代码5.1 查询课程5.2 新…

【备战蓝桥杯系列】蓝桥杯国二选手笔记二:算法模版笔记(Java)

感谢大家的点赞,关注,评论。准备蓝桥杯的同学可以关注一下本专栏哦,不定期更新蓝桥杯笔记以及经验分享。本人多次参加过蓝桥杯,并获得过蓝桥杯国二的成绩。 算法模版笔记(Java) 这篇文章给大家分享我的蓝桥…