IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构(二)--- 线性表 -> 正文阅读

[数据结构与算法]数据结构(二)--- 线性表

一、线性表的定义

线性表是具有相同数据类型的 n 个元素的有序序列,其中 n 为表长,当 n=0 时线性表是一个空表。

L=\left (a _{1},a _{2},...,a _{i},a _{i+1},..., a _{n}\right ),a_{1}是表头元素,a_{n}是表尾元素,除第一个元素外,每个元素有且仅有一个直接前驱;除最后一个元素外,每个元素有且仅有一个直接后继。

二、线性表的基本操作

InitList(&L): 初始化表。构造一个空的线性表L,分配内存空间。

DestroyList(&L): 销毁操作。销毁线性表,并释放线性表所占用的内存空间。

ListInsert(&L,i,e): 插入操作。在表L中的第i个位置上插入指定元素e.

ListDelete(&L,i,&e): 删除操作。删除表L中第i个位置的元素,并用e返回删除元素的值。

LocateElem(L,e): 按值查找操作。在表L中查找具有给定关键字值的元素。

GetElem(L,i): 按位查找操作。获取表L中第i个位置的元素的值。

Length(L):求表长。返回线性表L的长度,即L中数据元素的个数。

PrintList(L): 输出操作。按前后顺序输出线性表L的所有元素值。

Empty(L):判空操作。若L为空表,则返回true,否则返回false。

三、顺序表

顺序表是用顺序存储的方式实现线性表顺序存储。把逻辑上相邻的元素存储在物理位置上也相邻的存储单元中,元素之间的关系由存储单元的邻接关系来体现。

顺序表的实现:

(1)静态分配:顺序表的表长刚开始确定后就无法更改,存储空间是静态的。

(2)动态分配:申请一大片连续的存储空间。顺序表存满时,可再用malloc动态拓展顺序表的最大容量;需要将数据元素复制到新的存储区域,并用free函数释放原区域。

顺序表的特点:

(1)随机访问:即可以在O(1)时间内找到第i个元素。

(2)存储密度高,每个节点只存储数据元素。

(3)扩展容量不方便,即便采用动态分配的方式实现,拓展长度的时间复杂度也比较高。

(4)插入、删除数据操作不方便,需要移动大量元素。

顺序表插入、删除,顺序表按位查找、按值查找

四、单链表

顺序表中每个结点中只存放数据元素,可随机存取,存储密度高,但其要求大片连续空间,改变容量不方便。

单链表中每个结点除了存放数据元素外,还要存储指向下一个结点的指针。

单链表两种实现方式:

不带头结点:空表判断,L == NULL。

带头结点:空表判断,L->next == NULL。

按位序插入(带头结点)

ListInsert(&L,i,e): 插入操作。在表L中的第i个位置上插入指定元素e。

?按位序插入(不带头结点)

ListInsert(&L,i,e): 插入操作。在表L中的第i个位置上插入指定元素e。

?指定结点的后插操作

??指定结点的前插操作

方法一:

?方法二:

?按位序删除(带头结点)

?指定结点的删除

?单链表的查找

按位查找:


按值查找:

?单链表的建立

初始化一个单链表,每次取一个数据元素,插入到表尾或表头。

尾插法:

头插法:

注意:遇到链表的逆置问题,考虑用头插法。?

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:38:43  更:2022-04-01 23:41:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:58:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码