| |
|
开发:
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是根据实际问题定义足够大的整数。
SeqList List,*; //定义顺序表和指向顺序表的指针变量 1.3线性表的链式存储 ??? 线性表的链式存储可以用连续或者不连续的存储单元来存储线性表中的元素,在这种存储方式下,需要用指针来指示元素之间的关系,即通过指针链接元素之间的邻接关系,而这种指针是要占用额外的存储空间的。链式存储方式失去了顺序表可以随机存取元素的功能,但换来了存储空间操作的便捷性,即进行插入和删除操作时无需移动大量的元素。 ? ? ? ??1.??单链表:采用链表实现元素之间的线性关系最简单最常用:通过指针建立节点之间的线性关系。单链表的节点结构如下:
数据域? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?指针域 ??? 链表是由一个个节点构成的,单链表节点定义如下:
? ? ? ? 通常在单链表第一个节点之前添加一个头节点,不存储任何数据信息,只是通过头指针指向头节点,这样就可以依次访问单链表中的所有节点。 ????????无论单链表中的节点如何变化,头节点始终不变,使单链表的运算变得简单。 ? ? ? ? 2.? 循环列表:将单链表中的最后一个节点的指针值由空改为指向单链表的头节点,整个链表形成一个环。 ? ? ? ? 3.? 双向循环链表 ? ? ? ? 指链表的每个节点中除了数据域,还设置了两个指针域:一个用来指向该节点的直接前驱节点,另一个用来指向该节点的直接后继节点。结构如图:
? ? ? ?定义如下
? ? ? ? 在双向循环链表中可以通过指向某个节点的指针p直接得到指向该节点后继节点的指针p → next。同理p→prior。因此,在查找前驱节点的操作中无须再循环遍历链表进行查找。 ???持续更新..... ???每天提醒自己,自己就是个菜鸡! ???已经看到最后啦,如果对您有帮助留下的每一个点赞、收藏、关注是对菜鸡创作的最大鼓励? ???有相关问题可以写在评论区,一起学习,一起进步 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/25 17:53:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |