数据结构
文章平均质量分 90
-恰饭第一名-
流水不争先,争的是滔滔不绝(重补基础中)
展开
-
大话数据结构之查找(三)(哈希表)
一、哈希表查找定义散列技术:在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使得每个关键字key对应一个存储位置f(key)哈希表:采用散列技术将记录存储在一块连续的存储空间中,这块连续存储空间称为散列表或哈希表散列地址:散列函数得到的存储位置,即散列函数值称为散列地址。冲突在构造散列表时,不同的关键字可能得到同一个散列地址,这种关键字不同而散列函数值相同的现象称为冲突。二、哈希函数的定义方法两个原则:计算简单散列地址分布均匀1、直接定址法取关键字原创 2021-05-30 16:10:49 · 593 阅读 · 3 评论 -
大话数据结构之查找(二)
一、二叉排序树(又称为二叉查找树)它或者是一颗空树,或者是具有下列性质的二叉树若它的左子树不空,则左子树上所有结点的值均小于它的根结构的值;若它的右子树不空,则右子树所有的结点的值均大于它的根结点的值;它的左、右子树也分别为二叉排序树构造一颗二叉排序树的目的,其实并不是为了排序,而是为了提高查找和插入删除关键字的速度1、二叉排序树查找操作/* 二叉树的二叉链表结点结构定义 */typedef struct BiTNode /* 结点结构 */{ int data; /* 结点数据原创 2021-05-24 16:34:12 · 125 阅读 · 2 评论 -
大话数据结构之查找(一)
一、查找概论查找表由同一类型的数据元素(或记录)构成的集合关键字数据元素中某个数据项等等值,用它可以标识一个数据元素,也可以标识一个记录的某个数据项(字段)主关键字可以唯一地标识一个记录的关键字次关键字可以识别多个数据元素(或记录)的关键字查找就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)查找表按照操作方式来分为两大种:静态查找表和动态查找表静态查找表:只作查找操作的查找表。它的主要操作有:查询某个“特定的”数据元素是否在查找原创 2021-05-15 20:02:13 · 180 阅读 · 2 评论 -
大话数据结构之图(下)
一、最小生成树构造连通网的最小代价生成树称为最小生成树一个连通图的生成树是一个极小的连通子图,它含有图中全部的顶点,但只有足以构成一棵树的n-1条边1.1、普里姆算法#define MAXVEX 20#define GRAPH_INFINITY 65535/* Prim算法生成最小生成树 */void MiniSpanTree_Prim(MGraph G){ int min, i, j, k; int adjvex[MAXVEX]; /* 保存相关顶点下标 */ int l原创 2021-05-10 16:17:56 · 109 阅读 · 2 评论 -
大话数据结构之图(上)
图是一种较线性表和树更加复杂的数据结构。在图形结构中,结点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关一、图的定义图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中的顶点的集合,E是图G中边的集合线性表中数据元素成为元素,树中称为结点,在图中称为顶点在定义中,若V是顶点的集合,则强调来了顶点集合V有穷非空在图中,任意两个顶点都可能有关系,顶点之间的逻辑关系用边来表示...原创 2021-05-06 15:23:07 · 346 阅读 · 1 评论 -
大话数据结构之树(下)
一、线索二叉树原理对于一个有n个结点,每个结点有指向左右孩子的两个指针域,所以一共是2n个指针域。而n个结点的二叉树一共有n-1条分支线数。所以存在2n-(n-1)=n+1个空指针域因此,我们可以把上图中存在的大量空指针域拿来存放结点的前驱和后继节点的地址。我们把这种指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,相应的二叉树就称为线索二叉树如上图所示,将所有空指针域的rchild改为指向它的后继结点。于是我们就可以知道H的后继结点是D,I的后继结点是B,J的后继结点是E原创 2021-04-23 18:12:20 · 191 阅读 · 0 评论 -
大话数据结构之树(中)
一、二叉树的顺序存储结构二叉树的顺序存储结构就是用一维数组存储二叉树中的结点,并且结点的存储位置,也就是数组的下标要能体现结点之间的逻辑关系,比如双亲与孩子的关系,左右兄弟的关系等将上图存储在一维数组中,如下图所示:数组的下标代表结点的位置,比如E结点的数组下标是5,即代表它的位置是5。如果将如下的非完全二叉树存在数组中,该如何表示呢?上图是一棵非完全二叉树,其中该二叉树只存在ABCEGJ(即蓝色部分)结点,为了方便在数组中存储,需要将其补成完全二叉树,用^表示不存在的结点,如下图所原创 2021-04-15 15:10:25 · 133 阅读 · 0 评论 -
大话数据结构之树(上)
一、树的定义树是n(n>=0)个结点的有限集。n=0时称为空树。在任意一颗非空树中:1、有且仅有一个特定的称为根(root)的结点2、当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、…、Tm,其中每一个集合本身又是一棵树,并且称为根的子树(SubTree),如下图所示树的定义其实就是我们在讲解栈时提到的递归的方法对于树的定义还需要强调两点(1)n>0时,根结点是唯一的,不可能存在多个根结点(2)m>0时,子树的个数没有限制,但原创 2021-04-12 16:12:43 · 124 阅读 · 0 评论 -
大话数据结构之队列
一、队列的定义大家用电脑时一定都经历过,机器有时候会处于疑似死机的状态,鼠标点什么似乎都没有用,双击任何快捷方式都不动弹。就当你失去耐心,打算reset时,突然它像酒醒了一样,把你刚才点击的所有操作全部都按顺序执行了一遍。这其实是因为操作系统中的多个程序因需要通过一个通道输出,而按先后次序排队等待造成的再比如像移动、联通、电信等客服电话,客服人员与客户相比总是少数,在所有的客服人员都占线的情况下,客户会被要求等待,直到有某个客服人员空下来,才能让最先等待的客户接通电话。这里也是将所有当前拨打客服电原创 2021-03-28 16:16:37 · 299 阅读 · 0 评论 -
大话数据结构四(栈)
1、栈的定义1.栈的定义先进去,却要后出来,而后进的反而可以先出来的数据结构—栈例子:浏览器的后退键,点击后可以按访问顺序的逆序加载浏览过的网页栈是限定仅在表尾进行插入和删除操作的线性表我们把允许插入和删除的一端称为栈顶(top),另外一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出的线性表进栈:栈的插入操作,也称压栈、入栈出栈:栈的删除操作,也叫弹栈2.进栈出栈变化形式最先进栈的元素,不一定最后出栈比如,如果有3个整型数字元素1、2、3原创 2021-03-23 15:16:41 · 232 阅读 · 1 评论 -
大话数据结构三(线性表的链式存储)
3.6.1 线性表链式存储结构定义线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。这就意味着,这些数据元素可以存在内存未被占用的任意位置以前在顺序结构中,每个数据元素只需要存数据元素信息就可以了。现在链式结构中,除了要存数据元素信息外,还要存储它后继元素的存储地址为了表示每个数据元素ai与其直接后继数据元素ai+1之间的逻辑关系,对数据元素ai来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)原创 2021-03-16 15:24:45 · 132 阅读 · 0 评论 -
大话数据结构三(线性表)
1、线性表的定义线性表(List)零个或多个数据元素的有限序列原创 2021-03-12 19:23:05 · 99 阅读 · 0 评论 -
大话数据结构一
1、基本概念和术语1.1 数据数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合这些符号必须具备两个前提:可以输入到计算机中能被计算机程序处理1.2 数据元素是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录例如:在人类中,人就是数据元素1.3 数据项数据项:一个数据元素可以由若干个数据项组成例如:人这样的数据元素,可以有姓名、年龄、性别、出生地址、联系电话等数据项数据项是数据不可分割的最小单位原创 2021-03-09 09:51:09 · 115 阅读 · 0 评论