![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构-C
文章平均质量分 77
chirrupy_hamal
hi, 我是ming.
展开
-
线性表之链表
通常将采用链式存储结构的线性表称为线性链表,简称链表。从链接方式的角度看,链表可分为单链表、循环链表和双链表。在顺序表中,用一组地址连续的存储单元来依次存放线性表的结点,因此结点的逻辑顺序和物理顺序是一致的。但链表则不然,链表是用一组任意的存储单元来存放线性表的结点,这组存储单元可以是连续的,也可以是非连续的,甚至是零散分布在内存的任何位置上。因此,链表中结点的逻辑顺序和物理顺序不一定相同。为了...原创 2019-04-04 14:31:23 · 439 阅读 · 0 评论 -
数据结构的基础概念及其内容
首先介绍一下数据结构的相关名词1、数据:在我们未接触计算机之前,我们所遇见的数据基本上都是一些数值,当然这并不全面。数据是描述客观事物的数值、字符以及能输入机器且能被处理的各种符号集合。换句话说,数据是对客观事物采用计算机能够识别、存储和处理的形式所进行的描述。简而言之,数据就是计算机化的信息。2、数据元素(记录)数据元素是组成数据的基本单位,是数据集合的个体,在计算机中通常作为一...原创 2018-10-06 23:44:35 · 499 阅读 · 0 评论 -
常见七大排序
排序原创 2019-09-06 08:38:38 · 96 阅读 · 0 评论 -
搜索之哈希
哈希表原创 2019-09-06 08:37:15 · 94 阅读 · 0 评论 -
搜索
搜索:在集合中找元素,在,就搜索成功,而且有的时候还得需要返回这个元素;否则就失败。搜索其实就是查找,根据给定的关键字(key)值(value),在由同一类型的数据元素构成的集合中确定一个其关键字(关键字,key,指的是数据元素中某个数据项(该数据项的值,value),用它可以标识由同一类型的数据元素构成的集合中一个或一组数据元素。如果一个关键字可以惟一表示一个数据元素,则称其为主关键字,否则称...原创 2019-08-10 20:09:49 · 376 阅读 · 0 评论 -
堆
如果有一个关键码(指的是数据元素中能起到标识作用的数据项)的集合K = {k0,k1,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K(2i+1)且Ki <= K(2i+2)(Ki >= K(2i+1)且Ki >= K(2i+2))i = 0,1,…,n-1,则称为小堆(或大堆)。堆就是一种特殊的完全二叉树。在小堆(或...原创 2019-08-09 13:59:18 · 108 阅读 · 0 评论 -
树之二叉树
二叉树的定义:把满足以下两个条件的树型结构叫做二叉树。(1)每个结点的度都不大于2;(2)每个结点的孩子结点次序不能任意颠倒。(位于左边的孩子叫做左孩子,位于右边的孩子叫做右孩子)...原创 2019-06-29 11:27:17 · 422 阅读 · 0 评论 -
树
树:非线性结构(结点间前驱、后继的关系并不具有惟一性),其结点间的关系是前驱惟一,而后继不惟一,即结点之间是一对多的关系。原创 2019-09-06 08:32:41 · 1964 阅读 · 0 评论 -
栈应用 VS 队列应用
栈最大的应用是改变序列顺序,而队列是没有这个性质的。因为栈具有先进后出的特性,而队列所具有的特性是先进先出。看下列例题:假定有三个元素a,b,c按a,b,c的次序依次进栈,且每个元素只允许进一次栈,则可能的出栈序列有什么?abc 进一个出一个cba 全部进栈再依次出栈acb a进去就出bca b进去就出bac a进b进b出a出c进c出...原创 2019-06-27 09:59:47 · 135 阅读 · 0 评论 -
限定性线性表—队列
队列是另一种限定性的线性表,它只允许在表的一端插入元素,而在另一端删除元素,所以队列具有先进先出(FIFO)的特性。在队列中,允许插入的一端叫做队尾(rear),允许删除的一端则称为队头(front)。与线性表类似,队列也可以有两种存储表示,即顺序表示和链式表示。队列之顺序队列循环队列是队列的一种顺序表示和实现方法。与顺序栈类似,在队列的顺序存储结构中,可以用一组地址连续的存储单元依次存...原创 2019-06-27 09:35:40 · 423 阅读 · 0 评论 -
二叉树之线索二叉树
二叉树的遍历运算是将二叉树中结点按一定规律线性化的过程。当以二叉链表作为存储结构时,只能找到结点的左、右孩子信息,而不能直接得到结点在遍历序列(前、中、后序)中的前驱和后继信息。要得到这些信息可采用以下两种方法:第一种方法是将二叉树遍历一遍,在遍历过程中便可得到结点的前驱和后继,但这种方法浪费时间。第二种方法是充分利用二叉链表中的空链域,将遍历过程中结点的前后继信息保存下来。下面重点讨论...原创 2019-07-02 09:19:55 · 289 阅读 · 0 评论 -
二叉树之Huffman树
哈夫曼树的基本概念原创 2019-07-01 17:17:17 · 1051 阅读 · 0 评论 -
线性表之顺序表
线性结构是最简单、最常用的一种数据结构。其特点是:在数据元素的非空有限集合中,除第一个元素无直接前驱、最后一个元素无直接后继外,集合中其他每个数据元素均有惟一的直接前驱和惟一的直接后继。线性表的逻辑结构:线性表可描述为,线性表是n个类型相同的数据元素的有限序列,对n>0,除第一个元素无直接前驱、最后一个元素无直接后继外,其余的每个数据元素只有一个直接前驱和一个直接后继,数据元素之间具有一对...原创 2019-04-02 21:14:11 · 1500 阅读 · 0 评论 -
限定性线性表—栈
栈(堆栈)和队列是两种重要的抽象数据类型,是一类操作受限制的特殊线性表,其特殊性在于限制插入和删除等运算的位置。在栈中,用户只能在指定的一端插入和删除元素,因此具有后进先出或先进后出的特性;在队列中,用户只能在一端插入元素,而在另一端删除元素,因此呈现先进先出或后进后出的特性。从数据结构角度看,它们都是线性结构。栈作为一种限定性线性表,是将线性表的插入和删除运算限制为仅在表的一端进行,通常将...原创 2019-04-06 11:18:58 · 1115 阅读 · 0 评论 -
静态链表
之前介绍的各种链表都是使用指针类型实现的,链表中结点空间的分配和回收(即释放)均是由编译系统提供的标准函数malloc和free动态实现的,故称之为动态链表。BASIC、FORTRAN 等高级语言并没有提出“指针”这种数据类型,在这种语句设施下,若仍想采用链表作存储结构,采用顺序存储结构数组模拟实现链表,在数组的每个表目中设置“游标(Cursor)”来模拟实现指针,由程序员自己编写从数组中“分配...原创 2019-04-04 15:50:36 · 273 阅读 · 0 评论 -
顺序表 VS 链表
顺序表和链表的比较一、基于空间的考虑1、顺序表的存储空间是静态分配的,在程序执行之前必须明确规定体制的存储规模。若线性表的长度n变化较大,则存储规模难以预先确定。估计过大将造成空间浪费,估计太小又将使空间溢出的机会增多,但是动态顺序表加入的扩容机制,只要内存空间尚有空闲,溢出现象便不会出现。而动态链表(既然都这么说了,当然也是有静态链表这么一说的,但是在此就不做过多讨论了,我会在下一博客浅谈...原创 2019-04-04 14:47:40 · 235 阅读 · 0 评论 -
算法的时间复杂度与空间复杂度
时间复杂度一个算法的执行时间大致上等于其所有语句执行时间的总和,对于语句的执行时间是指该条语句的执行次数和执行一次所需时间的乘积。并且一个算法花费的时间是与算法中所有语句总的执行次数成正比的,也就是说哪个算法中语句的执行次数多,它所花费的时间就多。算法时间分析度量的标准不是针对实际执行时间精确算出算法执行的具体时间(因为一个算法在不同的机器上执行所花的时间不一样。在不同时刻也会由于计算机资源...原创 2018-10-04 17:22:33 · 1908 阅读 · 0 评论