数据结构【线性表】

news2024/10/10 2:15:02

数据结构入门级

第二章 线性表

在这里插入图片描述

一、线性表的定义和基本操作

  • 线性表的定义:具有相同属性数据类型的数据元素组成的一个有限序列;除第一个元素外的元素都有直接前驱,除最后一个元素外的元素都有直接后继;存在一个唯一被称为“第一个”的元素,和唯一被称为“最后一个”的元素。

    • n为元素的个数,当n=0时为空表;n>0时,非空线性表记为:a1,a2…;a1是首结点,an是尾结点。
  • 基本操作:一维数组可以静态分配,也可以动态分配;

    • 静态分配:数组大小和空间是固定的,满了后再加新数据会奔溃;
    • 动态分配:可按照实际的储存数据大小动态分配空间。
  • 线性表特点:

    • 表中元素个数有限;
    • 表中元素具有相同逻辑上的顺序性,有先后次序;
    • 表中元素都是单个数据元素;
    • 表中元素数据类型相同,占的存储空间大小也一样;
    • 表中元素具有抽象性,只考虑逻辑关系,不需要考虑存储地址的关系(物理顺序)。

二、线性表的顺序操作

  • 线性表的顺序存储又称为顺序表,它是一组地址连续的存储单位;
  • 顺序表特点:逻辑顺序(元素间的关系)上相邻的两元素和物理顺序(内存地址,存储地址)上也相邻,随机访问,通过首地址和元素序号可以在O(1)的时间内找到指定元素;存储密度高,每个结点只存储数据元素;
  • 线性表操作:
    1.插入:将插入元素的位置后面的元素整体后移,从最后一个元素开始,表长L++;顺序表插入操作的时间复杂度为O(n);
    2.删除:将元素删除后,该元素后面的元素会依次向前移动,表长L–;时间复杂度为O(n);
    3.查找:在表中查元素值等于对应元素的位置序号,并返回其序号;时间复杂度为O(n);

三、线性表的链式表示

  • 链表概念:是动态分配存储空间的链式存储结构(顺序存取),又称为单链表;是通过一组任意的存储单位来存储线性表中的数据元素,通过指针来建立各数据元素之间的线性关系
  • 特点:从表中任何一个结点出发都能扫描到整个链表,表中元素散列的分布在存储空间中;head头结点放第一个结点地址,头结点的作用是方便运算。
    在这里插入图片描述
    1.单链表的基本操作:
    1.1.在链表的表头插入:时间复杂度O(1)
    在这里插入图片描述
    1.2.在链表中间插入:时间复杂度O(1)
    在这里插入图片描述
    1.3.删除链表第一个结点:时间复杂度O(1)
    在这里插入图片描述
    1.4.删除链表的其他结点:时间复杂度O(1)
    在这里插入图片描述2.单链表创建方法:
    2.1.头插法:时间复杂度O(n)
    在这里插入图片描述
    2.2.尾插法:时间复杂度O(n)
    在这里插入图片描述

结论:

  • 单链表按序号查找结点值的时间复杂度为O(n);
  • 单链表按值找表结点的时间复杂度为O(n);
  • 求表长的时间复杂度为O(n)。

四、双链表

  • 定义:每个数据结点中有两个指针,分别指向直接后继和直接前驱;
  • 双链表的基本操作:
    • 插入
      在这里插入图片描述

    • 删除
      在这里插入图片描述

五、循环链表
1.概念:与单链表的区别就是,循环链表最后一个节点的指针不是NULL,改为指向头节点,整个链表成环;而循环双链表不同于循环单链表的是,双链表的头节点的prior指针还要指向表尾节点。

在这里插入图片描述
六、静态链表
1.借助数组来表示,指针是节点相对地址(数组下标),又称游标;以next=1作为结束的标志,操作时不需要移动元素,只用修改指针。

七、顺序存储和链表的比较
1.顺序存储;链式存储

  • 空间性能
    • 存储密度:=1,更优;<1;
    • 容量分配:事先确定;动态改变,更为优;
  • 时间性能
    • 查找运算:O(n);O(n);
    • 读运算:更优,O(1);O(n);
    • 插入运算:O(n);O(1),更优;
    • 删除运算:O(n);O(1),更优;

2.顺序存储

  • 优点:空间利用率高,存取速度高;
  • 缺点:删除和插入较慢,不可增长长度,有空间限制;
  • 时间性能:查找O(1),插入和删除O(n)。

3.链表存储

  • 优点:插入和删除快,无空间限制,只和内存有关;
  • 缺点:需要额外空间存指针,查找速度慢;
  • 时间性能:查找O(n),插入和删除O(1)。

PS:可由一个尾指针唯一确定的链表有循环链表、循环双链表、双链表;

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ARM Coresight 系列文章 10.3 - ARM Coresight STM 寄存器介绍 及STM DMA 传输介绍】

文章目录 STM Register summarySTM DMA 相关的寄存器DMA TransferBurst requestSingle and burst request STM Register summary STM 的寄存器主要可以分为以下几类&#xff1a; STM DMA 相关的&#xff1b;STM HW Trigger 相关的&#xff1b;系统控制及状态寄存器&#xff1…

CSS布局定位+装饰

一、定位 1.1 网页常见布局方式 1. 标准流 1. 块级元素独占一行 → 垂直布局 2. 行内元素/行内块元素一行显示多个 → 水平布局 2. 浮动 1. 可以让原本垂直布局的 块级元素变成水平布局 3. 定位 1. 可以让元素自由的摆放在网页的任意位置 2. 一般用于 盒子之间的层叠情…

Java的运行时数据区域

Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域有各自的用途&#xff0c;以及创建和销毁的时间&#xff0c;有些区域随着虚拟机进程的启动而一直存在&#xff0c;有些区域则是依赖用户线程的启动和结束而建立和销毁。 根据《Jav…

OpenAI宣布安卓版ChatGPT正式上线;一站式 LLM底层技术原理入门指南

&#x1f989; AI新闻 &#x1f680; OpenAI宣布安卓版ChatGPT正式上线 摘要&#xff1a;OpenAI今日宣布&#xff0c;安卓版ChatGPT已正式上线&#xff0c;目前美国、印度、孟加拉国和巴西四国的安卓用户已可在谷歌Play商店下载&#xff0c;并计划在下周拓展到更多地区。Chat…

VMware Network Adapter VMnet1和VMnet8 未识别的网络问题

在安装虚拟机的时候使用的网络类型未NAT模式&#xff0c;但是却无法和外部网络ping通&#xff0c;并且使用Xshell进行连接反应也非常慢&#xff1b;于是在我查询半天问题之后&#xff0c;这个问题得到了解决&#xff0c;具体如下&#xff1a; 在使用NAT网络模式的时候需要进行…

【portswigger】第二专题-XSS(二)

portswigger 靶场&#xff08;第二章节&#xff09;XSS 视频同步更新至bilibili bibi地址欢迎关注微信公众号&#xff1a;微光安全团队 这是官方备忘录&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet总体目录 我这里简单总结一下每个…

nodejs+vue+elementui高校科研队伍管理系统_2byeq

系统阐述的是使用科研管理系统&#xff0c;对于nodejs、B/S结构、MySql进行了较为深入的学习与应用。主要针对系统的设计&#xff0c;描述&#xff0c;实现和分析与测试方面来表明开发的过程。开发中使用了vue框架和MySql数据库技术搭建系统的整体架构。利用这些技术结合实际需…

【Haclon】Liunx每个月过期了怎么使用

Liunx每个月过期怎么使用 1.去gitHub进行下载2. 下载最新的Halcon_licenses3.进行替换 1.去gitHub进行下载 https://github.com/lovelyyoshino/Halcon_licenses 2. 下载最新的Halcon_licenses sudo vim ~/.bashrc找到/opt/halcon 3.进行替换 /opt/halcon/license 将这个目…

百万数据分页查询优化方案

分页问题 分页列表查询是项目中的热点需求&#xff0c;这种需求的特点是&#xff1a;字段多、数据量大、访问频繁、使用率高的特点&#xff0c;这个功能是给用户最直观的展示系统的信息&#xff0c;针对于多、大、频、热这几个特点&#xff0c;会引申出一个问题&#xff1a;列…

swmm模型城市内涝一维二维耦合;海绵城市+SWMM完整版教程

随着计算机的广泛应用和各类模型软件的发展&#xff0c;将排水系统模型作为城市洪灾评价与防治的技术手段已经成为防洪防灾的重要技术途径。本次将聚焦于综合利用GIS及CAD等工具高效地进行大规模城市排水系统水力模型的建立&#xff0c;利用SWMM实现排水系统水力模拟。讲解SWMM…

el-table 表格头部合并

<el-table v-loading"listLoading" :key"tableKey" :data"list" stripe border fit highlight-current-rowstyle"width: 100%;" size"mini"><el-table-column label"第一行" align"center">…

Windows 安装 Redis5

Windows 安装 Redis5 安装包 Redis for Windows 5.0.14.1 https://github.com/tporadowski/redis/releases/tag/v5.0.14.1 安装教程 选择安装路径&#xff0c;并勾选下方&#xff0c;将 Redis 添加到系统环境变量 这个是 Redis 默认的端口号&#xff0c;无特殊需求不用改 设置…

ES6 模块编程(新思路方便复习笔记)

文章目录 ES6 模块编程(新思路方便复习笔记)介绍需求说明思路分析/图解代码实现创建common.js创建use_common.js 其它导出形式--直接导出创建common2.js创建use_common2.js 其它导出形式--默认导出创建common3.js创建use_common3.js--导入默认导出模块/数据注意事项和使用细节导…

毓恬冠佳冲刺上市:打破汽车天窗外商垄断,长安汽车为其主要客户

撰稿|行星 来源|贝多财经 7月23日&#xff0c;上海毓恬冠佳科技股份有限公司&#xff08;以下简称“毓恬冠佳”&#xff09;在深圳证券交易所的审核状态变更为“已问询”。据贝多财经了解&#xff0c;毓恬冠佳于2023年6月27日递交招股书&#xff0c;准备在创业板上市。 本次冲…

十一、数据结构——树(Tree)的基本概念

数据结构之树(Tree) 目录 树的基本概念树的分类树的基本操作树的应用结语 树的基本概念 树是一种重要的数据结构&#xff0c;它在计算机科学中被广泛应用。树的特点是以分层的方式存储数据&#xff0c;具有层次结构&#xff0c;类似于现实生活中的树状结构。在树中&#xff…

环境变量初始化与对应文件的生效顺序

正常登陆情况下&#xff08;不是系统启动过程而是输入用户名和密码登录时&#xff0c;或者注销用户重新登录&#xff09;&#xff0c;环境变量配置文件的调用过程&#xff1a; // 正常登陆时环境变量配置文件的调用过程 /etc/profile|--/etc/profile.d/*|--/etc/profile.d/lan…

设计模式---综合应用-自定义Spring框架-自定义Spring IOC-定义解析器、IOC容器相关类

3 定义解析器相关类 3.1 BeanDefinitionReader接口 BeanDefinitionReader是用来解析配置文件并在注册表中注册bean的信息。定义了两个规范&#xff1a; 获取注册表的功能&#xff0c;让外界可以通过该对象获取注册表对象。 加载配置文件&#xff0c;并注册bean数据。 /*** …

提示工程101|与 AI 交谈的技巧和艺术

随着 ChatGPT 的问世&#xff0c;人工智能&#xff08;AI&#xff09;新时代也正式开启。ChatGPT 是一种语言模型。它与用户进行对话交互&#xff0c;以便用户输入问题或提示&#xff0c;模型响应&#xff0c;然后对话可以继续来回进行&#xff0c;类似于在消息传递应用程序上向…

docker容器日志大小限制

docker的日志随着时间推移越来越大&#xff0c;我们可以做出一些限制。 docker的日志驱动设置有两种方式&#xff0c;一种是全局配置&#xff0c;一种是特定容器的限制。 这里我选择特定容器限制更加的符合生产环境。全局配置下&#xff0c;需要重启docker。 参考官方文档&am…

在Chrome(谷歌浏览器)中安装Vue.js devtools开发者工具及解决Vue.js not detected报错

文章目录 一、Vue.js devtools开发者工具安装1.打开谷歌浏览器——点击扩展程序——选择管理扩展程序2.先下载添加一个谷歌助手到扩展程序中&#xff08;根据提示进行永久激活&#xff09;3.点击谷歌浏览器的应用商店4.输入Vue.js devtools——搜索——选择下载 二、解决Vue.js…