![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 81
HLXchamp
这个作者很懒,什么都没留下…
展开
-
树,森林和二叉树的关系
树的存储结构1.双亲表示法用一组连续的空间来存储树中的结点,数组元素存储结点数据和双亲结点指示器。双亲表示法形式说明如下:#define MAX 100typedef struct TNode{ DataType data; int parent; }TNode; 树定义:typedef struct { TNode tree[MAX]; int node...原创 2021-01-22 14:20:49 · 2688 阅读 · 1 评论 -
数组的定义与存储顺序
数组定义和运算① 数组是高级语言一般都支持的数据类型,这里学习数组在计算机内部如何处理,主要是存取,地址计算;② 从逻辑结构上看,数组可以看成是一般线性表的扩充。二维数组视作线性表① 把矩阵Am×n看成n个列向量的线性表:A=(α1,α2…αj…αn),αj=(a1j,a2j, …,amj),(1 ≤ j ≤ n)本身也是一个线性表,称为列向量。...原创 2020-04-07 14:44:37 · 1916 阅读 · 0 评论 -
线性表的链式存储
单链表上的基本运算单链表的存储定义:typedef struct Node{ ElemType data; struct Node* next;}Node,*Linklist; //Linklist为结构指针类型原创 2020-05-03 15:16:56 · 151 阅读 · 0 评论 -
二叉树的遍历与线索化
二叉树的遍历二叉树遍历:按一定规律对二叉树中的每个结点进行访问且仅访问一次。二叉树的基本结构由根结点、左子树和右子树组成。用L、D、R分别表示遍历左子树、访问根结点、遍历右子树,那么对二叉树的遍历顺序就可以有: 访问根,遍历左子树,遍历右子树 (记做DLR)。 访问根,遍历右子树,遍历左子树 (记做DRL)。 遍历左子树,访问根,遍历右子树 (记做LDR)。 遍历左子树,遍历...原创 2020-04-16 20:08:06 · 300 阅读 · 0 评论 -
线性表的顺序存储及操作
存储的表示#define MAXSIZE 100typedef struct{ ElemType elem[MAXSIZE]; int last/*记录线性表中最后一个元素在数组elem[]的位置 (下标值),空表置为一 */ } SeqList; PS:1、结点类型定义中 Elemtype 是为了描述的统一而自定的,实际应用中可以根据自...原创 2020-04-07 09:05:50 · 610 阅读 · 0 评论 -
三种特殊矩阵的压缩存储
矩阵通常采用二维数组形式来表示(逻辑结构)特殊矩阵压缩到一维数组来节省存储空间压缩原则:只存非零元素规律分布矩阵:① 按规律公式压缩:A[i][j]→B[k],二维下标[i][j]→一维下标[k],映射,地址计算问题;② 稀疏矩阵:只存非零元素。三角矩阵:三角矩阵大体分为:下三角矩阵、上三角矩阵和对称矩阵。一个n阶矩阵A:若当i < j时,有aij=0,则称此矩阵为下三...原创 2020-04-07 22:56:27 · 4218 阅读 · 0 评论 -
树的定义和基本术语与二叉树
非线性结构: 前驱、后继不具备唯一性。树:前驱唯一,后继不一定唯一,结点之间一对多的关系;图:前驱,后继都不一定唯一,结点间多对多关系。树和图理论基础属于离散数学的范畴,数据结构仅讨论特性及实现技术;树描述一种层次结构,应用广泛,eg.文件系统、编译系统、目录组织 。树的概念与定义树的基本概念:树:n(n≥0)个结点的有限集合T。当n=0时,称为空树;当n>0时,该集合满...原创 2020-04-08 11:02:39 · 321 阅读 · 0 评论 -
基于树的查找法
二叉排序树:二叉排序树(二叉查找树)是一种特殊结构的二叉树,其定义为:是一棵空树,或者是具有如下性质的二叉树:1)若左子树非空,则左子树上所有结点的值均小于根结点的值;2)若右子树非空,则右子树上所有结点的值均大于根结点的值;3)它的左右子树也分别为二叉排序树。重要性质:中序遍历一个二叉排序树时可以得到一个递增有序序列。结构定义:typedef struct node{ KeyType key ; /*关键字的值*/ struct node *lchild, *r原创 2020-05-28 21:17:28 · 95 阅读 · 0 评论 -
基于线性表的查找法
基本概念列表:由同一类型的数据元素(或记录)构成的集合,可利用任意数据结构实现。关键字:数据元素的某个数据项的值,用它可以标识列表中的一个或一组数据元素。主关键字:可以唯一标识列表中的一个数据元素的关键字,否则为次关键字。当数据元素仅有一个数据项时,数据元素的值就是关键字。查找:根据给定的关键字值,在特定的列表中确定一个其关键字与给定值相同的数据元素,并返回该数据元素在列表中的位置。在查找算法中要用到三类参量,即:①查找对象K(找什么)②查找范围L(在哪找)③查找的结果(K在L中的位置)原创 2020-05-28 11:29:38 · 125 阅读 · 0 评论 -
图的遍历与应用
图的遍历从图中的某个顶点出发,按某种方法对图中的所有顶点访问且仅访问一次。① 为每个顶点设一个访问标志,用以标示是否被访问过;② 访问标志用数组visited[n]来表示 。深度优先搜索:是指按照深度方向搜索 ,它类似于树的先根遍历,基本思想:1)从图中某个顶点v0出发,访问v0。2)找出刚访问顶点vi的第一个未被访问的邻接点,访问该顶点。重复此步骤,直到当前的顶点没有未被访问的邻接点为止。3)返回前一个访问过的顶点,找出其下一个未被访问的邻接点,访问之;转2)。过程示例:A为起始顶点原创 2020-05-25 09:44:54 · 539 阅读 · 0 评论 -
图的定义与存储结构
图的定义与基本术语图的定义图(Graph)是一种网状数据结构。形式化定义如下:Graph=(V,R)V={x∣x ∈ DataObject}R={VR}VR={<x,y>∣P(x,y)∧(x,y∈V)} DataObject为具有相同特性元素的集合。V中的数据元素通常称为顶点;VR是两个顶点之间的关系的集合;P(x,y)表示x和y之间有特定的关联属性P;若<x,y>∈VR,则<x,y>表示从顶点x到顶点y的一条弧;并称x为弧尾或起始点,称y为弧原创 2020-05-19 17:26:29 · 127 阅读 · 0 评论 -
数据结构——队列
队列的定义队列 (Queue):另一种限定性的线性表。只允许在表的一端插入元素,而在另一端删除(取值)元素,具有先进先出 (FIFO,Fist In Fist Out)特性。队尾(rear):允许插入的一端,队头(front):允许删除的一端。类似排队:最早进入队列的人最早离开,新来的人加入队尾。示例:队列q = (a1,a2,…,an),a1:队头元素,an:队尾元素。元素按照a1,a2,…,an的顺序进入,也必须按照同样的次序出队。队列的表示与实现链队列:链表表示的队列,为了操作方原创 2020-05-12 14:35:58 · 627 阅读 · 0 评论 -
数据结构——栈
栈的表示和实现1、顺序栈利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素。① 一组地址连续的存储单元:数组;② 附设一个栈顶指针top来动态地指示栈顶元素在顺序栈中的位置。通常以top = -1表示空栈。进栈与出栈:0、存储结构:#define Stack_Size 50 typedef struct{ StackElementType elem[Stack_Siz...原创 2020-05-05 15:40:33 · 220 阅读 · 0 评论 -
哈夫曼树及其应用
哈夫曼树1、一些基本概念路径:指从一个结点到另一个结点之间的分支序列。路径长度:指从一个结点到另一个结点所经过的分支数目。结点的权:给树的每个结点赋予一个具有某种实际意义的实数。带权路径长度:从树根到某一结点的路径长度与该结点的权的乘积。树的带权路径长度:树中所有叶子结点的带权路径长度之和。研究路径长度PL和带权路径长度WPL目的在于寻找最优。思考:什么样的二叉树的路...原创 2020-05-04 16:37:27 · 557 阅读 · 0 评论 -
线性表的应用举例
一元多项式的表示及相加1、一元多项式的表示:一元多项式可按升幂的形式写成:Pn(x)P_n(x)Pn(x) = p0p_0p0 + p1p_1p1x1x^1x1 + p2p_2p2x2x^2x2 + … + pnp_npnxnx^nxn, PiP_iPi是指数i项的系数.一元多项式Qm(x)Q_m(x)Qm(x)可用线性表Q来表示.Q= (q0q_0q0,q1q_1q1...原创 2020-05-04 15:39:03 · 707 阅读 · 0 评论