当前位置: 首页 > news >正文

数据结构 (7)线性表的链式存储

前言

       线性表是一种基本的数据结构,用于存储线性序列的元素。线性表的存储方式主要有两种:顺序存储和链式存储。链式存储,即链表,是一种非常灵活和高效的存储方式,特别适用于需要频繁插入和删除操作的场景。

链表的基本概念

     链表是一种通过节点(Node)相互链接构成的线性数据结构。每个节点包含两部分:

  1. 数据域(Data Field):用于存储数据元素。
  2. 指针域(Pointer Field):用于存储指向下一个节点的指针(或引用)。

     根据链表的不同结构,可以分为以下几种类型:

  1. 单向链表(Singly Linked List):每个节点只包含一个指向下一个节点的指针。
  2. 双向链表(Doubly Linked List):每个节点包含两个指针,一个指向下一个节点,一个指向上一个节点。
  3. 循环链表(Circular Linked List):最后一个节点的指针指向头节点,形成一个环。

单向链表

基本操作

  1. 初始化链表:创建一个头节点,并初始化其指针为nullptr
  2. 插入操作
    • 头插法:在新节点中存储数据,将其next指向当前头节点,然后更新头节点为新节点。
    • 尾插法:遍历链表找到最后一个节点,将新节点的next设置为nullptr,然后最后一个节点的next指向新节点。
  3. 删除操作:根据给定条件找到待删除节点的前一个节点,然后将其next指向待删除节点的next
  4. 查找操作:遍历链表,找到满足条件的节点。
  5. 遍历链表:从头节点开始,依次访问每个节点的数据域,直到遇到nullptr

双向链表

基本操作

  1. 初始化链表:创建一个头节点,并初始化其prevnext指针为nullptr
  2. 插入操作
    • 头插法:更新新节点的next为当前头节点,更新当前头节点的prev为新节点,然后更新头节点为新节点,并设置新节点的prevnullptr
    • 尾插法:遍历链表找到最后一个节点,将新节点的prev指向最后一个节点,新节点的next设置为nullptr,然后最后一个节点的next指向新节点。
  3. 删除操作:根据给定条件找到待删除节点,更新其前一个节点的next和后一个节点的prev
  4. 查找操作:从头节点开始,依次访问每个节点的数据域,直到找到满足条件的节点或遍历到nullptr
  5. 遍历链表:从头节点开始,可以向前或向后遍历。

循环链表

        循环链表与单向链表或双向链表的主要区别在于最后一个节点的指针不是指向nullptr,而是指向头节点。

基本操作

  1. 初始化链表:创建一个头节点,并初始化其指针指向自身。
  2. 插入操作:类似于单向链表或双向链表,只是最后一个节点的指针需要指向头节点。
  3. 删除操作:更新相关节点的指针,使其形成一个连续的环。
  4. 查找操作:从头节点开始遍历,直到找到满足条件的节点或回到头节点。
  5. 遍历链表:从头节点开始,直到再次回到头节点。

链表的优缺点

优点

  1. 插入和删除效率高:不需要移动大量元素,只需调整指针。
  2. 内存利用率高:不需要预先分配固定大小的数组。
  3. 灵活性强:可以动态调整链表的大小。

缺点

  1. 访问效率低:需要从头节点开始遍历,无法直接通过索引访问元素。
  2. 占用额外空间:每个节点需要存储指针。

总结

        链表是一种非常灵活的数据结构,适用于需要频繁插入和删除操作的场景。不同类型的链表(单向链表、双向链表、循环链表)适用于不同的应用场景。了解链表的基本结构和操作对于掌握数据结构非常重要。

 结语   

帝是我的见证人

所以我竭尽全力让它成功

!!!

相关文章:

数据结构 (7)线性表的链式存储

前言 线性表是一种基本的数据结构,用于存储线性序列的元素。线性表的存储方式主要有两种:顺序存储和链式存储。链式存储,即链表,是一种非常灵活和高效的存储方式,特别适用于需要频繁插入和删除操作的场景。 链表的基本…...

库的操作.

创建、删除数据库 创建语法: CREATE DATABASE [IF NOT EXISTS] db_name[ ]是可选项,IF NOT EXISTS 是表明如果不存在才能创建数据库 //查看数据库,假设7行 show databases; //创建数据库 --- 本质在Linux创建一个目录 create database databa…...

Vue进阶之Vue CLI服务—@vue/cli-service Vuex

Vue CLI服务—vue/cli-service & Vuex vue/cli-service初识bin/vue-cli-service.js代码执行解读 Vuexgenerator/index.jsstore/index.js插件化的能力怎么引入呢? vue/cli-service 初识 第一块是上一个讲述的cli是把我们代码的配置项,各种各样的插件…...

导入100道注会cpa题的方法,导入试题,自己刷题

一、问题描述 复习备考的小伙伴们,往往希望能够利用零碎的时间和手上的试题,来复习和备考 用一个能够导入自己试题的刷题工具,既能加强练习又能利用好零碎时间,是一个不错的解决方案 目前市面上刷题工具存下这些问题 1、要收费…...

数据库操作、锁特性

1. DML、DDL和DQL是数据库操作语言的三种主要类型 1.1 DML(Data Manipulation Language)数据操纵语言 DML是用于检索、插入、更新和删除数据库中数据的SQL语句。 主要的DML语句包括: SELECT:用于查询数据库中的数据。 INSERT&a…...

学习笔记039——SpringBoot整合Redis

文章目录 1、Redis 基本操作Redis 默认有 16 个数据库,使用的是第 0 个,切换数据库添加数据/修改数据查询数据批量添加批量查询删除数据查询所有的 key清除当前数据库清除所有数据库查看 key 是否存在设置有效期查看有效期 2、Redis 数据类型String追加字…...

(笔记)简单了解ZYNQ

1、zynq首先是一个片上操作系统(Soc),结合了arm(PS)和fpga(PL)两部分组成 Zynq系统主要由两部分组成:PS(Processing System)和PL(Programmable L…...

大众点评小程序mtgsig1.2算法

测试效果: var e function _typeof(o) {return "function" typeof Symbol && "symbol" typeof Symbol.iterator? function (o) {return typeof o;}: function (o) {return o && "function" typeof Symbol &…...

七牛云AIGC内容安全方案助力企业合规创新

随着人工智能生成内容(AIGC)技术的飞速发展,内容审核的难度也随之急剧上升。在传统审核场景中,涉及色情、政治、恐怖主义等内容的标准相对清晰明确,但在AIGC的应用场景中,这些界限变得模糊且难以界定。用户可能通过交互性引导AI生成违规内容,为审核工作带来了前所未有的不可预测…...

.net的winfrom程序 窗体透明打开窗体时出现在屏幕右上角

窗体透明, 将Form的属性Opacity,由默认的100% 调整到 80%,这个数字越小越透明(尽量别低于50%,不信你试试看)! 打开窗体时出现在屏幕右上角 //构造函数 public frmCalendarList() {InitializeComponent();//打开窗体&…...

基于YOLOv8深度学习的智慧课堂教师上课行为检测系统研究与实现(PyQt5界面+数据集+训练代码)

随着人工智能技术的迅猛发展,智能课堂行为分析逐渐成为提高教学质量和提升教学效率的关键工具之一。在现代教学环境中,能够实时了解教师的课堂表现和行为,对于促进互动式教学和个性化辅导具有重要意义。传统的课堂行为分析依赖于人工观测&…...

使用 Tkinter 创建一个简单的 GUI 应用程序来合并视频和音频文件

使用 Tkinter 创建一个简单的 GUI 应用程序来合并视频和音频文件 Python 是一门强大的编程语言,它不仅可以用于数据处理、自动化脚本,还可以用于创建图形用户界面 (GUI) 应用程序。在本教程中,我们将使用 Python 的标准库模块 tkinter 创建一…...

【C++笔记】模板进阶

前言 各位读者朋友们大家好!上一期我们讲了stack、queue以及仿函数。先前我们讲过模板的初阶内容,这一期我们来更深入的学习一下模板。 一. 非类型模板参数 1.1 非类型模板参数 模板参数分为类型形参和类类型形参: 类型形参:…...

Soul App创始人张璐团队亮相GITEX GLOBAL 2024,展示多模态AI的交互创新

随着全球AI领域的竞争加剧,越来越多的科技巨头和创新企业纷纷致力于多模态AI的开发。2024年10月14日至18日,GITEX GLOBAL海湾信息技术博览会在迪拜举行,吸引了超过6700家全球科技巨头和创新公司参与,展示了智能互联、人工智能等领域的新成果。 此次展会中,Soul App创始人张璐团…...

ffmpeg.wasm 在浏览器运行ffmpeg操作视频

利用ffmpeg.wasm,可以在浏览器里运行ffmpeg,实现对音视频的操作 参考链接: https://blog.csdn.net/jchsgwbr/article/details/143252044 https://gitee.com/CXBalCai/ffmpeg-template 其他参考 https://github.com/ffmpegwasm/ffmpeg.wasm https://b…...

用Python爬虫“偷窥”1688商品详情:一场数据的奇妙冒险

引言:数据的宝藏 在这个信息爆炸的时代,数据就像是一座座等待挖掘的宝藏。而对于我们这些电商界的探险家来说,1688上的商品详情就是那些闪闪发光的金子。今天,我们将化身为数据的海盗,用Python这把锋利的剑&#xff0…...

CentOS上如何离线批量自动化部署zabbix 7.0版本客户端

CentOS上如何离线批量自动化部署zabbix 7.0版本客户端 管理的服务器大部分都是CentOS操作系统,版本主要是CentOS 7。因为监控服务器需要,要在前两天搭建的Zabbix 7.0系统上把这些CentOS 7系统都监控起来。因为服务器数量众多,而且有些服务器…...

【开源项目】ChinaAddressCrawler 中国行政区划数据(1980-2023年)采集及转换(Java版),含SQL格式及JSON格式

ChinaAddressCrawler 开源项目地址:https://gitee.com/li_yu_jiang/ChinaAddressCrawler 来源于国家民政部的数据只包括省级(省/直辖市/自治区/特别行政区)、地级(地级市/地区/自治州/盟)、县级(县/市辖区…...

React中事件处理和合成事件:理解与使用

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

Local Changes不展示,DevEco Studio的git窗口中没有Local Changes

DevEco Studio的git窗口中,没有Local Changes,怎么设置可以调出? 进入File-->Settings-->Version Control,将Use non-modal commit interface前的勾选框取消勾选,点击OK即可在打开git窗口,就可以看到…...

2026校招人才整体素质洞察

导读:这份《2026 校招人才素质洞察报告》由前程无忧发布,围绕 AI 时代校招变局,依托 800 万 测评数据,系统剖析应届毕业生的素质特征,提出人才筛选新坐标,为企业校招提供战略方向与实操参考。关注公众号&a…...

林志玲退文策院聘书,台湾大骂“中国玲”

林志玲到底咋了?这几天林志玲拒绝文策院董事的消息,在网上炸开了锅。可谁能想到,这个“拒绝”本身,反倒把她架在火上烤了一遍。先看岛内那边。一听说这事,一些极端网友直接炸毛,翻出她以前为祖国做的事儿&a…...

从开发机到K8s集群,DeepSeek量化服务上线倒计时:48小时极速部署SOP(含CI/CD流水线脚本)

更多请点击: https://kaifayun.com 第一章:DeepSeek量化部署方案 DeepSeek系列大模型(如DeepSeek-V2、DeepSeek-Coder)在推理阶段对计算资源和显存占用要求较高,量化部署是实现低延迟、低成本服务的关键路径。本章聚焦…...

限流策略失效导致服务雪崩?DeepSeek v3.2+最新RateLimiter配置参数详解,含12个关键字段压测对比数据

更多请点击: https://kaifayun.com 第一章:限流策略失效导致服务雪崩?DeepSeek v3.2最新RateLimiter配置参数详解,含12个关键字段压测对比数据 在高并发微服务场景中,RateLimiter 配置不当是引发级联失败与服务雪崩的…...

为什么92%的DeepSeek部署失败?揭秘量化校准中被忽略的3个KL散度阈值临界点

更多请点击: https://intelliparadigm.com 第一章:为什么92%的DeepSeek部署失败?揭秘量化校准中被忽略的3个KL散度阈值临界点 在真实生产环境中,DeepSeek-R1/Distill系列模型的INT4量化部署失败率高达92%,核心症结并非…...

Python安全自动化:构建可落地的渗透测试工作流

1. 这不是炫技工具箱,而是一套可落地的安全工作流“黑客的‘瑞士军刀’”这个说法在安全圈里被用滥了——很多人一听到就想到Kali Linux里那堆图标花哨、命令冗长、跑起来动不动就报错的GUI工具。但真正干过渗透测试的人心里都清楚:能稳定复现、可嵌入流…...

AppImageLauncher终极指南:10分钟掌握Linux便携应用系统集成

AppImageLauncher终极指南:10分钟掌握Linux便携应用系统集成 【免费下载链接】AppImageLauncher Helper application for Linux distributions serving as a kind of "entry point" for running and integrating AppImages 项目地址: https://gitcode.c…...

张量网络机器学习:从平均风险下界看量子模型泛化极限

1. 项目概述:当张量网络遇见机器学习如果你和我一样,既对量子多体物理中的张量网络着迷,又对机器学习模型的泛化能力充满好奇,那么“张量网络机器学习模型平均风险的理论分析”这个课题,无疑是一个能将两者完美结合的宝…...

3个关键步骤解锁Axure中文界面:从专业术语到流畅体验的完整指南

3个关键步骤解锁Axure中文界面:从专业术语到流畅体验的完整指南 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn Axur…...

Golang JWT生产实践:时间精度、密钥轮换与Refresh Token安全设计

1. 这不是“加个Token就完事”的简单活儿 Golang领域JWT——这六个字背后,藏着太多人踩过坑、重写过三遍、上线后半夜被报警电话叫醒的真实故事。我第一次在生产环境用JWT做身份验证时,自信满满地照着某篇教程写了20行代码,结果上线第三天&am…...