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 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 数据结构笔记第一章:线性表 -> 正文阅读

[数据结构与算法]数据结构笔记第一章:线性表

1.1线性表的定义

? ? ? ? 线性表是最简单、最基本、最常用的一种线性结构。线性结构的特点是数据元素,简称元素,之间是线性关系,元素一个接一个的排列,并且一个线性表中所有的元素类型都是相同的。简单来说,一个线性表是n个元素的有限序列,其特点是在元素的非空集合中;存在唯一一个称为“第一个”的元素;存在唯一一个称为“最后一个的元素”;除了第一个元素,序列中的每个元素只有一个直接前驱;除了最后一个元素,序列中的每个元素只有一个直接后继。

1.2线性表的顺序存储——顺序表

? ? ? ? 线性表的顺序存储是指用一组地址连续的存储单元按顺序依次存放线性表中的每个元素,这种存储方式存储的线性表称为顺序表。在这种顺序存储结构中,逻辑上相邻的两个元素在物理位置上也相邻,即无需增加额外的存储空间来表示线性表中元素之间的逻辑关系。

??? 由于顺序表中每个元素具有相同的数据类型,即每个元素的大小相同,因此顺序表中第i个元素ai的存储地址为

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Loc(ai)=Loc(a1)+(i-1)*L???? 1≤i≤n

顺序表的任意一个元素都可以随机存取。

? ? ? ? 此外,考虑到顺序表的运算有插入、删除等操作,即表长是可变的,因此数组的容量要设计的足够大。我们用data[MAXSIZE]来存储顺序表,而MAXSIZE是根据实际问题定义足够大的整数。

Typedef struct

{

?? Datatype data[MAXSIZE];?? //存储顺序表中的元素

?? Int len;???????????? //顺序表的表长

}Seqlist ;?????????????? //顺序表的类型

SeqList List,*; //定义顺序表和指向顺序表的指针变量

1.3线性表的链式存储

??? 线性表的链式存储可以用连续或者不连续的存储单元来存储线性表中的元素,在这种存储方式下,需要用指针来指示元素之间的关系,即通过指针链接元素之间的邻接关系,而这种指针是要占用额外的存储空间的。链式存储方式失去了顺序表可以随机存取元素的功能,但换来了存储空间操作的便捷性,即进行插入和删除操作时无需移动大量的元素。

? ? ? ??1.??单链表:采用链表实现元素之间的线性关系最简单最常用:通过指针建立节点之间的线性关系。单链表的节点结构如下:

data

next

数据域? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?指针域

??? 链表是由一个个节点构成的,单链表节点定义如下:

Typedef struct node

{

?? datatype data;?? //data为节点的数据信息

?? Int len;????????? //next为指向后继节点的指针

}LNode ;????? ?????? //单链表节点类型

? ? ? ? 通常在单链表第一个节点之前添加一个头节点,不存储任何数据信息,只是通过头指针指向头节点,这样就可以依次访问单链表中的所有节点。

????????无论单链表中的节点如何变化,头节点始终不变,使单链表的运算变得简单。

? ? ? ? 2.? 循环列表:将单链表中的最后一个节点的指针值由空改为指向单链表的头节点,整个链表形成一个环。

? ? ? ? 3.? 双向循环链表

? ? ? ? 指链表的每个节点中除了数据域,还设置了两个指针域:一个用来指向该节点的直接前驱节点,另一个用来指向该节点的直接后继节点。结构如图:

prior

data

next

? ? ? ?定义如下

Typedef struct dinode
{
	datatype data;   //data为节点的数据信息 
	struct dlnode *prior,next;          // prior和next为指向直接前驱与直接后继节点的指针
}DLNode ;     //双向循环链表节点类型

? ? ? ? 在双向循环链表中可以通过指向某个节点的指针p直接得到指向该节点后继节点的指针p → next。同理p→prior。因此,在查找前驱节点的操作中无须再循环遍历链表进行查找。

???持续更新.....

???每天提醒自己,自己就是个菜鸡!

???已经看到最后啦,如果对您有帮助留下的每一个点赞、收藏、关注是对菜鸡创作的最大鼓励?

???有相关问题可以写在评论区,一起学习,一起进步

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-07-26 12:18:24  更:2021-07-26 12:19:58 
 
开发: 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年4日历 -2024/4/27 9:25:41-

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