数据结构
文章平均质量分 94
星夜夏空99
这个作者很懒,什么都没留下…
展开
-
数据结构——查找
查找:在数据集合中寻找满足某种条件的数据元素的过程称为查找。查找结果一般分为两种即,查找成功查找失败。查找表(查找结构):用于查找的数据集合称为查找表,可以是一个数组或链表等数据类型静态查找表:若一个查找表的操作仅涉及查询某种元素是否在表中或者检索满足某种特性的数据元素的各种属性,则称该表为静态查找表。(若存在查找插入操作以及删除操作等修改了表,则不是静态查找表,反之我们称为动态查找表)关键字:数据元素中唯一表示该元素的某个数据项的值,使用基于关键字查找,查找结果应该是唯一的平均查找长度:在查找过程原创 2022-07-11 20:25:41 · 4800 阅读 · 1 评论 -
数据结构——排序
排序就是重新排列表中的元素,使得表中的元素满足按关键字有序的过程,为了查找方便,通常希望计算机中的表是按关键字有序的。算法稳定性,若待排序表中两个元素a,b其对应的关键字相同,且a在b前面,若在某一算法排序之后,a仍然在b前面(相对位置不变),则可以说这个算法稳定,若相对位置发生改变,则算法不稳定稳定性并能评判一个算法的优劣,主要是对算法性质描述,若一个序列中不允许重复元素出现,则稳定性的概念也就不存在了在排序过程中,根据元素是否完全在内存中可分为内部排序和外部排序在这里我们只讨论内部排序,一般情况下,原创 2022-07-09 16:02:15 · 246 阅读 · 0 评论 -
数据结构——树
树与线性表同是逻辑结构的一种,不同于线性表,树是一种非线性结构,线性表的中的数据很明显是一种一对一的关系,树中的数据是一对多的形式。所以树也是一种重要的数据结构。很显然,树的结构是递归的的,即在树的定义中又即树中又有子树,定义中又有自己。同时树也是一种分层结构,具有以下两个特点:二叉树是 另一种树形结构,每个节点之多只有两个子树(所以二叉树中不存在度大于2的节点),并且二叉树的子树也有左右之分不可随意颠倒。 与树相似,二叉树也是以递归的形式定义,二叉树是n(n>=0)个节点的有限集合因为二叉树是有序的所原创 2022-07-04 15:47:29 · 1317 阅读 · 0 评论 -
数据结构——队列
队列(Queue)同栈一样都是一种操作受限制的线性表,他与栈不同的是,队列只允许在表的一端进行插入数据,另一端进行删除数据。就好像我们现实生活中排队,一端入队,另一端出队,所以队列与栈不同的最大特点就是先进先出(FIFO)。队列的顺序存储队列的顺序存储结构实现是指分配一块连续的存储单元存放队列元素,并附有两个指针头指针(front)和尾指针(rear);front指向队首元素,rear指向队尾后一个位置。所以当rear = front时,则队列为空(非循环链表)。代码实现:这里的size只是为了理解方原创 2022-07-01 20:00:49 · 357 阅读 · 0 评论 -
数据结构——栈
栈(stack)是只允许在一段进行插入和删除数据的操作的线性表。所以栈是一种操作受限的线性表。栈中有一下三个概念。栈的操作就像一个箱子,我们放入数据的时候只能层层堆叠,取数据的时候只能从最上面的数据开始。这种栈的操作特性可以简单的概括为后进先出(Last In First Out)所以对于栈来讲:他属于线性表,所以逻辑结构依然是线性结构,当然存储结构也可以使用顺序存储和链式存储。栈的数学性质: n各不同元素进栈,出栈元素不同排列个数为1n+1C2nn\frac{1}{n+1}C_{2n}^nn+11C原创 2022-07-01 13:19:07 · 731 阅读 · 0 评论 -
线性表——链表
顺序表和链表都是线性表的一种。但链表与顺序表不同的是,他的物理上与逻辑上的机构并不一致。顺序表的话,逻辑相邻,物理上也是相邻的。所以对于一整块连续的物理地址,当我们进行插入和删除操作的时候就会需要大量的移动元素。而链表不需要使用地址连续的存储单元,即不需要满足物理与逻辑一致,通过"链"建立数据之间的逻辑关系,当进行插入或删除操作的时候,只需要修改指针即可。线性表的链式存储为单链表,通过任意一组存储单元来存储数据。链表通过许多节点构成,节点除了放自身的数据还有存放下一个节点的地址来保证链表的逻辑关系。而链原创 2022-06-30 14:05:45 · 2726 阅读 · 0 评论 -
线性表——顺序表
顺序表顺序表特点顺序表主要特点是随机访问,即通过首地址和元素序号可在时间O(1)内找到指定元素顺序表的存储密度高,每个节点只存储数据元素顺序表逻辑上相邻的元素物理上也相邻,所以插入和删除需要大量元素。顺序表实现我们使用C语言来实现,首先有两个准备知识,一个是结构体的使用,第二个我准备创建一个可动态分配空间的顺序表,所以我们需要使用stdlib.h头文件中的内存管理函数。然后我们需要明确一个顺序表创建需要什么,以及有哪些操作方法。参照上面线性表的操作方式。在创建结构体中可以看到,在数组定原创 2022-06-29 20:39:37 · 900 阅读 · 0 评论