数据结构
搬砖的jiayi
这个作者很懒,什么都没留下…
展开
-
数据结构(一)——基本概念
本人是看小甲鱼的数据结构来学习数据结构的。所以主要内容都是来自于小甲鱼。数据结构分类数据结构分为逻辑结构和物理结构。逻辑结构分为:集合(无序)、线性(一对一)、树形(一对多)、图形(多对多)。物理结构分为:顺序结构(逻辑关系、物理关系统一)、链式结构(不统一)、索引结构、散列结构。索引结构:在存储结点信息时,建立一个附加的索引表,每一项是索引项,一般形式是:(关键字,地址),关键字是唯...原创 2019-03-05 11:34:02 · 118 阅读 · 0 评论 -
数据结构之二叉树
二叉树(Binary Tree)是应用最广泛的一类树结构,它具有很多重要的性质,而且存储表示比一般的树存储要简单(主要是,树的结点的度情况太多,需要一种能够简单而完整表达树的优点的结构,来作为实际统一使用),同时一般树又可以简便地转化为二叉树。字面意思,二叉树即是所有的度都最多为2(可以是0、1、2) 的树。二叉树的根结点下,两个子树分别称为,根的左子树和右子树。二叉树的分类:满二叉树:对于...原创 2019-04-09 17:27:45 · 351 阅读 · 0 评论 -
数据结构之图的最小路径
最小路径和树的那一节,最小生成树不同。最小生成树,是图中连接了所有的顶点,所生成的边上的权值之和最小的生成的的树,是指所有路径相加起来和最小的树。它的权值,是在结点上的。最小路径,讨论的是,如何确定指定的某个顶点,到其余任意一个顶点对应的的最短路径;以及,如何确定图中,任意两个顶点的最短路径。(这不是对图的打乱重组,只是在寻找现有的路径最小的那个)。求某个顶点到其他各顶点的最短路径的Dijk...原创 2019-04-11 22:42:14 · 513 阅读 · 0 评论 -
数据结构之图的生成树和最小生成树、AOE网和拓扑排序、关键路径
相关概念:通过对图的遍历,由遍历过程中使用到的边和顶点(顶点一定是都用上了,但是边只用了一部分,产生的效果就是,顶点都只和一个或者两个顶点邻接而已),这个子图称为原图的生成树。按照遍历的方式的不同,称为深度优先生成树、广度优先生成树。最小生成树:对于边是有权的话,生成树的所有边的权值之和就是生成树的权。其权值之和最小的生成树称为该图的最小生成树(Minimum Spanning Tree,M...原创 2019-04-11 22:41:58 · 1005 阅读 · 0 评论 -
数据结构之图(基本概念和存储方式、搜索)
对于树来说,每个结点都是只有一个父结点,父结点才是一对多的关系。而图(Graph)是很明确的多对多的关系。图的基本概念:图,图是图形结构的简称,是一种非线性数据结构。一个图 G 是由两个集合 V(G)、E(G)组成的。图的二元组可以定义为: G = (V,E)V(G)是指顶点(Vertex)的非空有限集合,每个顶点都可以标上不同到的字符或者数字(其实,就是树之类所说的结点) 。E(G)是 G...原创 2019-04-10 10:47:51 · 684 阅读 · 0 评论 -
Qt——自定义事件+多线程与GUI线程通信
当一个Qt应用程序开始执行时,只有一个线程在运行——初始线程,这是唯一一个被允许创建这个QApplication对象并对它执行exec函数的线程。因此,常常把这个线程作为图形用户界面(GUI)线程,在调用exec函数后,这个线程要么等待一个事件,要么处理一个事件。如果我们使用多线程通信,像互斥锁的话,是会因为线程阻塞将GUI线程冻结。所以,互斥锁之类到的做法不支持线程与GUI线程通信。那么,解决...原创 2019-03-24 16:50:46 · 775 阅读 · 0 评论 -
数据结构之树
数据结构中的树,是非线性结构,是一对多的关系树的结点之间有很明显的层次关系。树结构有非常广泛的应用,是一种非常重要的数据结构。树的描述形式是倒立的树的形式,即是树根在最顶端,结点依次散开。树的相关概念:——树根(Root):即是最上面的,没有父节点的那个结点。——子树(Subtree):即是除了根以外的的具有下一层结点的那些层的结点,都称为子树。——结点的度:该结点的子树数,称为该结点的度...原创 2019-04-04 10:54:58 · 239 阅读 · 0 评论 -
数据结构(四)——栈
栈,即stack,同样是线性表。只是它在设计时,运算规则做了限制。是限定性的线性表结构。栈,只能在固定的一端插入和取出(取出,也就意味着删除了)。通常,能插入删除的那一端,叫做栈顶,top;不能插入删除的,称为栈底,bottom。插入栈,称为入栈。删除,称为出栈/退栈。当栈中没有元素时,称为空栈。学习过单片机的应该对栈有了解,毕竟是有一个实实在在的物理容器的概念。出入栈的原则,是先进后出,la...原创 2019-03-12 23:51:57 · 1257 阅读 · 0 评论 -
数据结构(三)——单链表
单链表和顺序表同是属于线性表的范畴。链表分为动态链表和静态链表。按照链表最原来的定义的,都是动态链表(这里都是动态链表)。根据每个结点所含指针的个数的不同,链表分为两大类,即单链表和多重链表;而根据指针的链接方式,又分为普通链表和循环链表。以下内容针对最简单的链表形式,单链表链表同样是一个结构体的形式存在的,基本的组成(对于单链表),就是一个指向下一个结点的结点指针,一个存储的数据内容(这个...原创 2019-03-07 21:40:55 · 462 阅读 · 0 评论 -
数据结构(七)——(字符)串
串,即是字符串(String),,同样是特殊的线性表。是由n多个char类型组成的。不过,String在c语言里,不是作为关键字的(即是,没有这个类型)只有像Java,才有将String作为一个数据结构。c中,一般使用char * 作为String的形式。不过,这只是String的一种存储结构的体现。下面详述。串到的长度是按切切实实存在的char型来算的,‘\n’在这里不算入长度(但是应该还是会...原创 2019-03-15 11:41:14 · 300 阅读 · 0 评论 -
数据结构(六)——数组
数组(array),在c语言里是最早接触到的数据结构。但是如果作为数据结构这门课来学,在c中学到的关于它的知识,还不足够。数组的分类:按物理结构来看,数组分为顺序结构和链式结构。在顺序结构里,即便是多维数组(矩阵,Matrix),它还是按一维的形式存放在一组连续的存储空间里(别无他选)。一般有两种实现方法:按行顺序存储,称为以行为主(Row Major Order)。c、PASCAL等都采用...原创 2019-03-15 00:27:55 · 227 阅读 · 0 评论 -
数据结构(二)——线性表的顺序表
线性表就是一对一的关系。线性表分为,顺序表和链表(即是按物理结构划分的)。顺序表是物理地址相邻的,看起来像是数组的定义。不过,顺序表和数组也有不同。顺序表的属性是:——有存储空间的起始位置data,即是一个数组的首地址(这也就是数组了);——线性表有一个变量标记最大存储容量,MaxSize;——有一个变量标记当前的长度,length。后两个属性,恰恰体现了顺序表和数组的本质区别。顺序表...原创 2019-03-07 09:58:44 · 205 阅读 · 0 评论 -
数据结构(五)——队列
相对于栈,队列(queue)是另外一种特殊的线性表。队列的逻辑设计是,删除运算限定在表的一端进行,插入运算则被限定在表的另一端进行。约定将允许插入的一端称为队尾(Rear),删除的那一端称为队首(Front)。这样的逻辑设计,就其实是现实生活里的排队嘛。因此,队列是先进先出表(First In Frist Out,FIFO)。队列同样有顺式结构和链式结构(一种逻辑结构的两种物理结构)。顺式的长度...原创 2019-03-14 11:17:10 · 229 阅读 · 0 评论 -
数据结构之二叉树的哈夫曼树及其应用
前面一篇介绍的是,二叉树的一些基本概念、特征以及它如何同树、森林转换之类,现在介绍的,二叉树的另外一类,哈夫曼二叉树树。哈夫曼树(Huffman)树,又称最优树,是一类带权路径长度最短的树,有着广泛的应用(哈夫曼树,并不针对只是二叉树,其他的树也可以是哈夫曼,只要满足是带权路径最小即可),在这里只讨论哈夫曼树的二叉树。相关概念:——树的每一层,到下一层的路径距离,统一记为 1 。 树中的一个...原创 2019-04-09 17:28:09 · 957 阅读 · 0 评论