数据结构的概念大合集02(线性表)

概念大合集02

  • 1、线性表及其逻辑结构
    • 1.1 线性表的定义
    • 1.2 线性表的基本操作
  • 2、线性表的顺序存储结构
    • 2.1 顺序表
  • 3、线性表的链式存储
    • 3.1 链表
      • 3.1.1 头结点(头指针),首指针,尾指针,尾结点
      • 3.1.2 单链表
      • 3.1.3 双链表
      • 3.1.4 循环链表
        • 3.1.4.1 循环单链表
        • 3.1.4.2 循环双链表
  • 4、顺序表与链表的比较

1、线性表及其逻辑结构

1.1 线性表的定义

是具有相同特性的数据元素的一个有限序列(即有限,且有序)
一般表示为L = (a1,a2,a3,a4,…,an-1,an)
线性表是表示数据元素之间的逻辑结构,即不考虑在计算机中的具体实现。

1.2 线性表的基本操作

函数名函数作用
InitList(&L)初识化线性表,构造一个空列表
DestroyList(&L)销毁线性表,释放为线性表L分配的内存空间
ListEmpty(L)判断线性表是否为空表,若L为空表,则返回true,否则返回false
ListLength(L)输出线性表的长度,返回L中元素的个数
DisList(L)输出线性表,当线性表L不为空时,顺序输出L中的个元素值
GetElem(L,i,&e)按序号求线性表中的元素,用e返回L中第i(1~n-1)个元素值
LocateElem(L,e)按元素值查找,返回L中的第一个值与e相等的元素的序号
ListInsert(&L,i,e)插入元素,在L的第i个位置插入一个新元素e
ListDelete(&l,i,&e)删除元素,删除L的第i个元素,并用e返回该元素值

注:具体的函数表现会在另外的文章里说明,本文章只对概念进行阐述

2、线性表的顺序存储结构

2.1 顺序表

线性表的所有元素按照其逻辑顺序依次存储到计算机的一篇连续的存储空间当中,即在逻辑结构上面相邻的两个元素在内存空间上也相邻,通常把这种结构称为顺序表,通常用数组的方式表现。

请添加图片描述

3、线性表的链式存储

链式存储不需要在逻辑结构上相邻的元素在物理位置上也相邻,这是通过指针来实现的

3.1 链表

链表是将线性表中的元素通过指针连接起来的一种表现形式,链表中的每个元素称为结点,一个结点由数据元素(数据域)和指向后继结点的指针(指针域)构成,从而实现线性表的链式存储结构。

3.1.1 头结点(头指针),首指针,尾指针,尾结点

头结点:通常,链表都会带上一个头结点,来表示唯一标识,即头结点的存在,是为了区别链表,所以,头指针里面一般只有指向首结点的指针,不会存放链表的第一个元素

首指针:指向首节点的指针,而首节点用来存放链表的第一个元素

尾指针:指向尾结点的指针

尾结点:当尾结点的指针域不需要指向任何一个结点时,则将其后继指针指向NULL,比如单链表和双链表。

3.1.2 单链表

在单链表当中,每个结点由一个数据域和一个指针域构成,其中,头结点不存放元素,只存放指向首结点的指针,尾结点的指针指向NULL。
请添加图片描述

3.1.3 双链表

在双链表里面,每个结点含有一个数据域和两个指针域,一个指向后继结点,一个指向前驱结点
请添加图片描述

3.1.4 循环链表

3.1.4.1 循环单链表

将单链表改为循环单链表的过程,是将它的尾结点的next指针域由原来为空改为指向头结点,让整个单链表形成一个环。由此,从表中任一结点出发均可找到链表中其他结点
请添加图片描述

3.1.4.2 循环双链表

把双链表改为循环双链表的过程是将它的尾结点的next指针域由原来为空改为指向头结点,把头结点的prior指针域改为指向尾结点,使整个双链表形成两个环。
请添加图片描述

4、顺序表与链表的比较

顺序表:在完成插入或删除元素这类操作时,比较费时;

链表:在完成插入或删除元素这类操作时,只需要修改指针域的指向即可,方便省时

 
注:
本文将主要探讨线性表的概念,其中提及的各个函数操作将在后续的文章中详细展示,敬请读者期待。
上一篇文章
数据结构的概念大合集01(含数据结构的基本定义,算法及其描述)
下一篇文章
数据结构的概念大合集03(栈)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

HTML设置语言

一、代码示例 相关代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>HTML设置语言</title> </head> <body><marquee>我爱你</marquee> <!-- …

详解MySQL的MVCC(ReadView部分解析C++源码)

文章目录 1. 什么是MVCC2. MVCC核心组成&#xff08;三大件&#xff09;2.1 MVCC为什么需要三大件 3. 隐藏字段4. undo log4.1 模拟版本链数据形成过程 5. Read View5.1 m_ids5.2 m_creator_trx_id5.3 m_low_limit_id5.4 m_up_limit_id5.5 可见性分析算法 6. MVCC流程模拟6.1 R…

【Java】容器|Set、List、Map及常用API

目录 一、概述 二、List 1、List的常用API 2、ArrayList 3、List遍历 三、Set 1、Set的常用方法: 2、HashSet 3、遍历集合&#xff1a; 四、Map 1、Map常用API 2、HashMap 3、遍历Map 五、迭代器 一、概述 在Java中所有的容器都属于Collection接口下的内容 1…

【PyTorch】成功解决ModuleNotFoundError: No module named ‘torch’

【PyTorch】成功解决ModuleNotFoundError: No module named ‘torch’ &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希…

Oracle19c静默部署

Oracle19c静默部署文档 下载地址 https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#db_free 一、系统基础配置 1、创建用户和用户组 # 创建oinstall和dba用户组 groupadd oinstall groupadd dba# 创建Oracle用户 useradd -g oinstall…

一起学数据分析_3(模型建立与评估_1)

使用前面清洗好的数据来建立模型。使用自变量数据来预测是否存活&#xff08;因变量&#xff09;&#xff1f; &#xff08;根据问题特征&#xff0c;选择合适的算法&#xff09;算法选择路径&#xff1a; 1.切割训练集与测试集 import pandas as pd import numpy as np impo…

Linux第78步_使用原子整型操作来实现“互斥访问”共享资源

使用原子操作来实现“互斥访问”LED灯设备&#xff0c;目的是每次只允许一个应用程序使用LED灯。 1、创建MyAtomicLED目录 输入“cd /home/zgq/linux/Linux_Drivers/回车” 切换到“/home/zgq/linux/Linux_Drivers/”目录 输入“mkdir MyAtomicLED回车”&#xff0c;创建MyA…

【数据结构和算法初阶(C语言)】二叉树铺垫--栈帧的创建与销毁--细节全解

前言&#xff1a; 学习这么久以来&#xff0c;可能有很多疑问&#xff1a;局部变量怎么创建的&#xff1f;为什么局部变量的值是随机的&#xff1f;函数是怎么传参的&#xff1f;传参的顺序是怎么样的&#xff1f;形参和实参是什么样的关系&#xff1f;函数调用是怎么做的&…

App的测试,和传统软件测试有哪些区别?增加哪些方面的测试用例

从上图可知&#xff0c;测试人员所测项目占比中&#xff0c;App测试占比是最高的。 这就意味着学习期间&#xff0c;我们要花最多的精力去学App的各类测试。也意味着我们找工作前&#xff0c;就得知道&#xff0c;App的测试点是什么&#xff0c;App功能我们得会测试&#xff0…

CTF-SHOW-摆烂杯-电子取证

&#x1f36c; 博主介绍 博主介绍&#xff1a;大家好&#xff0c;我是 Mikey &#xff0c;很高兴认识大家~ 主攻&#xff1a;【应急响应】 【python】 【数字取证】【单机取证】【流量分析】【MISC】 &#x1f389;点赞➕评论➕收藏 养成习惯&#xff08;一键三连&#xff0…

JAVA实战开源项目:高校学院网站(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学院院系模块2.2 竞赛报名模块2.3 教育教学模块2.4 招生就业模块2.5 实时信息模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 学院院系表3.2.2 竞赛报名表3.2.3 教育教学表3.2.4 招生就业表3.2.5 实时信息表 四、系…

数据结构课程设计实践--哈夫曼树

1.问题描述 2.需求分析 2.1 功能需求 设计一个哈夫曼的编/译码系统&#xff0c;实现下述功能&#xff1a; 初始化&#xff0c;从终端读入字符集大小n&#xff0c;以及n个字符和n个权值&#xff0c;建立哈夫曼树&#xff0c;并将它存于文件hfmTree中&#xff1b;编码&#xf…

RIPGeo参文33、37(最大化原始图与摄动图之间的一致性):保证不相关信息的消除

RIPGeo中有: 训练目标为: 由于需要准确的地理定位预测,损失鼓励图表示学习来保持IP地理定位的基本信号。同时,和通过最大化原始图与摄动图[33]、[37]之间的一致性,保证了不相关信息的消除。考虑到模型在训练早期的不稳定性,我们不直接同时优化多个训练目标。相反,我们采…

物联网竞赛板CubMx全部功能简洁配置汇总

目录 前言&#xff1a;1、按键&LED灯配置&#xff1a;2、OLED配置&#xff1a;3、继电器配置&#xff1a;4、LORA模块配置&#xff1a;5、矩阵模块&#xff1a;6、串口模块&#xff1a;7、RTC配置&#xff1a;8、ADC模块配置&#xff1a;9、温度传感器模块&#xff1a;后续…

3.Windows下安装MongoDB和Compass教程

Windows下安装MongoDB 总体体验下来&#xff0c;&#xff0c;要比MySQL的安装简单了许多&#xff0c;没有过多的配置&#xff0c;直接就上手了&#xff01; 1、下载 进入官方的下载页面https://www.mongodb.com/try/download/community&#xff0c;如下选择&#xff0c;我选…

【热门话题】前端框架发展史

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 前端开发的历史演变引言第一章&#xff1a;起源与基础建设 - HTML与CSS时代1.1 …

python 爬取人民新闻

基础信息获取&#xff1a; 要闻url&#xff1a;https://www.gov.cn/yaowen/liebiao/home.htm 下一页的url&#xff1a;https://www.gov.cn/yaowen/liebiao/home_1.htm 基础代码&#xff1a; import re import openpyxl import requests from lxml import etree import osdef …

MySQL 篇- Java 连接 MySQL 数据库并实现数据交互

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 JDBC 概述 2.0 实现 Java 连接 MySQL 数据库并实现数据交互的完整过程 2.1 安装数据库驱动包 2.2 创建数据源对象 2.3 获取数据库连接对象 2.4 创建 SQL 语句 2.…

基于Java+SpringMvc+vue+element实现驾校管理系统详细设计

基于JavaSpringMvcvueelement实现驾校管理系统详细设计 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末…

SQLiteC/C++接口详细介绍之sqlite3类(十二)

返回目录&#xff1a;SQLite—免费开源数据库系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十一&#xff09; 下一篇&#xff1a;SQLiteC/C接口详细介绍之sqlite3类&#xff08;十三&#xff09; ​37.sqlite3_load_extension 用于在SQLit…