数据结构
文章平均质量分 83
wmy0217_
2023天天开心(♡˙︶˙♡)
展开
-
DFS和BFS的实现(邻接矩阵、邻接表)
文章目录DFS和BFS的实现(邻接矩阵)DFS和BFS的实现(邻接表)DFS和BFS的实现(邻接矩阵)#include<iostream>#include<queue>using namespace std;#define OK 1#define Maxint 0typedef int status ;bool visited[10];typedef ...原创 2020-02-18 21:03:02 · 2407 阅读 · 3 评论 -
邻接矩阵创建无向网、邻接表创建无向图(代码实现)
文章目录邻接矩阵创建无向网代码实现邻接表创建无向图代码实现邻接矩阵创建无向网代码实现#include<iostream>using namespace std;#define OK 1#define Maxint 32767typedef int status ;typedef struct{ char vexs[100]; int arcs[100][100]...原创 2020-02-18 14:50:06 · 8202 阅读 · 3 评论 -
邻接表、十字链表、邻接多重表—图的存储结构
文章目录邻接表1、邻接表表示法2、无向图的邻接表3、有向图的邻接表4、练习5、邻接表的结构类型定义6、采用邻接表表示法创建无向网7、邻接表特点8、邻接矩阵与邻接表表示法的关系十字链表邻接多重表邻接表1、邻接表表示法邻接表是一种图的链式存储结构。在邻接表中,对图中每个顶点 vi 建立一个单链表,把与 vi 相邻接的顶点放在这个链表中。邻接表中每个单链表的第一个结点存放有关顶点的信息,把这...原创 2020-02-16 13:01:59 · 7162 阅读 · 0 评论 -
邻接矩阵—图的存储结构
文章目录邻接矩阵1、邻接矩阵表示法2、无向图的邻接矩阵表示法3、有向图的邻接矩阵表示法4、网(有权图)的邻接矩阵表示法5、邻接矩阵的存储表示6、采用邻接矩阵表示法创建无向网7、邻接矩阵优点和缺点图没有顺序存储结构,但可以借助二维数组来表示元素之间的关系,即邻接矩阵表示法图的链式存储结构有多种,邻接表、十字链表、邻接多重表邻接矩阵、邻接表是我们重点要研究的邻接矩阵1、邻接矩阵表示法建立...原创 2020-02-15 23:32:09 · 14249 阅读 · 1 评论 -
队列的简单实现(循环队列、链队)
文章目录循环队列的简单实现链队的简单实现循环队列的简单实现#include<iostream>#define MAXQSIZE 100 #define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2using names...原创 2020-02-07 13:23:26 · 366 阅读 · 0 评论 -
哈夫曼树及其应用
文章目录哈夫曼树的基本概念哈夫曼树的构造算法哈夫曼树算法实现哈夫曼编码思想哈夫曼编码的算法实现文件的编码和译码哈夫曼树的基本概念路径:从树中一个结点到另一个结点之间的分支构成这两个结点间的路径结点的路径长度:两结点间路径上的分支数树的路径长度:从树根到每一个结点的路径长度之和。记作:TL权(weight):将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权结点的带权路径长度...原创 2020-02-06 21:05:31 · 2299 阅读 · 0 评论 -
栈的简单实现(顺序栈、链栈)
文章目录顺序栈的简单实现链栈的简单实现顺序栈的简单实现#include<iostream>#define MAXSIZE 100 #define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2using namespac...原创 2020-02-06 13:37:11 · 416 阅读 · 0 评论 -
线性表的简单实现(顺序表、单链表)
#include<iostream>#define MAXSIZE 100 #define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2using namespace std;typedef int Status;...原创 2020-02-06 09:11:35 · 428 阅读 · 0 评论 -
树与二叉树的转换、森林与二叉树的转换、树和森林的遍历
文章目录将树转换成二叉树将二叉树转换成树将森林转换成二叉树将二叉树转换成森林树的遍历森林的遍历由于树和二叉树都可以用二叉链表作存储结构,则以二叉链表作媒介可以导出树与二叉树之间的一个对应关系将树转换成二叉树①加线:在兄弟之间加一连线②抹线:对每个结点,除了其左孩子外,去除其与其余孩子之间的关系③旋转:以树的根结点为轴心,将整树顺时针转45°巧记:兄弟相连留长子将二叉树转换成树①...原创 2020-02-05 19:12:43 · 3366 阅读 · 0 评论 -
树的存储结构:双亲表示法、孩子表示法、孩子兄弟法
文章目录双亲表示法孩子表示法孩子兄弟法双亲表示法实现:定义结构数组存放树的结点,每个结点包含两个域:数据域:存放结点本身信息双亲域:指示本结点的双亲结点在数组中的位置结点结构:结点类型定义:typedef struct PTNode{//结点类型定义 TElemType data; int parent; //双亲位置域 }PTNode;另外,用 r 存储根结点的下...原创 2020-02-05 14:17:29 · 8654 阅读 · 0 评论 -
线索二叉树的基本概念
文章目录为什么要研究线索二叉树回顾:二叉链表中空指针域的数量利用二叉链表中的空指针域ltag与rtag线索二叉树的类型定义先序、中序、后序线索二叉树增设头结点为什么要研究线索二叉树当用二叉链表作为二叉树的存储结构时,可以很方便的找到某个结点的左右孩子;但一般情况下,无法直接找到该结点在某种遍历序列中的前驱和后继结点如何寻找特定序列中二叉树结点的前驱和后继???解决方法:1、通过遍历...原创 2020-02-05 09:53:43 · 2434 阅读 · 0 评论 -
实现二叉树的前中后遍历以及遍历的应用
代码如下:#include<iostream> using namespace std;typedef struct BiTNode{ char data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;void PreOrderTraverse(BiTree T){//先序 if(T==NULL) ret...原创 2020-02-04 23:10:10 · 347 阅读 · 0 评论 -
二叉树遍历算法的应用
文章目录先序遍历的顺序建立二叉链表复制二叉树计算二叉树的深度统计二叉树中结点的个数计算二叉树叶子结点数先序遍历的顺序建立二叉链表【算法步骤】①扫描字符序列,读入字符ch②如果ch是一个“#”字符,则表明该二叉树为空树,即 T 为NULL;否则执行以下操作:申请一个结点空间 T将 ch 赋给T->data递归创建T的左子树递归创建T的右子树【算法描述】void Crea...原创 2020-02-04 21:08:37 · 773 阅读 · 0 评论 -
递归法和非递归法遍历二叉树、层次遍历
递归法遍历二叉树遍历二叉树是指按某条搜索路径巡访树中的每个结点,使得每个结点均被访问一次,而且仅被访问一次访问的含义很广,可以是对结点做各种处理,包括输出结点的信息,对结点进行运算和修改等先序遍历先序遍历二叉树的操作定义如下:若二叉树为空,则空操作;否则1、访问根结点2、先序遍历左子树3、先序遍历右子树【算法描述】Status PreOrderTraverse(BiTr...原创 2020-02-04 17:17:18 · 1778 阅读 · 2 评论 -
二叉树的性质和存储结构
文章目录树的定义树的基本术语二叉树的定义1、二叉树与树的主要区别2、 二叉树的五种基本形态3、 二叉树的性质4、满二叉树、完全二叉树:5、完全二叉树的两个性质二叉树的存储结构1、顺序存储结构2、链式存储结构树的定义树(Tree)是n(n≥0)个结点的有限集,它为空树或非空树对于非空树T:有且仅有一个称之为根的结点除根节点以外的其余结点可分为m(m>0)个互补相交的有限集T1,...原创 2020-02-04 12:00:33 · 1496 阅读 · 0 评论 -
BF算法—串的模式匹配算法
子串的定位运算通常称为串的模式匹配或串匹配。串的模式匹配设有两个字符串S和T,设S为主串,也称正文串;设T为子串,也称模式。在主串S中查找与模式T相匹配的子串,如果匹配成功,确定相匹配的子串中的第一个字符在主串S中出现的位置。著名的模式匹配算法有BF算法和KMP算法,下面介绍BF算法。模式匹配不一定是从主串的第一个位置开始,可以指定主串中查找的起始位置pos。如果采用字符串顺序存储结构...原创 2020-01-20 18:48:29 · 4182 阅读 · 0 评论 -
KMP算法—串的模式匹配算法
KMP算法是一种改进的字符串匹配算法,KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个next()函数实现,函数本身包含了模式串的局部匹配信息。KMP算法的时间复杂度O(m+n)。KSP算法的匹配过程:KMP算法是怎样减少模式串与主串的匹配次数呢???每当匹配过程出现字符比较不等时主串的i 指针不动模式串的 j ...原创 2020-01-20 18:46:13 · 1786 阅读 · 0 评论 -
串的定义、类型定义、存储结构
串的定义串(string)(或字符串)是由零个或多个字符组成的有限序列,一般记为,s=“a1,a2…an”(n≥0)n为字符串的长度零个字符的串称为空串,其长度也为0串中任意个连续的字符组成的子序列称为该串的子串包含字串的串称为主串通常称字符在序列中的序号为该字符在串中的位置子串在主串中的位置则以子串的第一个字符在主串中的位置来表示只有两个串的长度相等,并且各个对应位置的字...原创 2020-01-18 22:29:37 · 1057 阅读 · 1 评论 -
简单实现单链表
#include<iostream>using namespace std;typedef struct LNode{ int data; struct LNode *next;}LNode,*LinkList;bool InitList(LinkList &L){//初始化 L=new LNode; L->next=NULL; L->d...原创 2020-01-16 19:58:35 · 379 阅读 · 0 评论 -
队列的基本操作
定义和特点和栈相反,队列(queue)是一种先进后出的线性表。它只允许在表的一端进行插入,而在另一端删除元素。允许插入的一端称为队尾(rear),允许删除的一端称为队头(front)。假设队列为q=(a1,a2,…,an),那么,a1就是队头元素,an就是队尾元素。队列中的元素是按照a1,a2,…,an的顺序进入的,退出队列也只能按照这个次序依次退出。队列的抽象数据类型定义:AD...原创 2020-01-15 23:57:32 · 5957 阅读 · 0 评论 -
简单实现顺序表
#include<iostream>#define MAXSIZE 100#define OVERLOW -1using namespace std;typedef struct{ int *elem; int length; }SqList;bool InitList(SqList &L){//建立顺序表 L.elem = new int[...原创 2020-01-14 15:32:41 · 310 阅读 · 0 评论 -
顺序栈与链栈的基本操作
栈的定义和特点栈是限定仅在表尾进行插入或删除操作的线性表。对栈来说,表尾端称为栈顶(top),表头端称为栈底(bottom)。不含元素的空表空表称为空栈。栈也被称为先进后出的线性表栈的抽象数据类型定义ADT Stack{数据对象:D={ai | ai∈ElemSet, i=1,2,…,n,n≥0}数据关系:R={ <a(i-1) , ai> | a(i-1), ai...原创 2020-01-13 14:08:53 · 1196 阅读 · 0 评论 -
线性表-单链表的基本操作
单链表的定义和表示单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成包括两个域:其中存储数据元素信息的域成为数据域(data);存储直接后继存储位置的域称为指针域(next)。单链表是由头指针唯一确定的,因此单链表可以用头指针的名字来命名。若头指针名是 L ,则简称该链表为表L。单链表可由头指针唯一确定,在...原创 2020-01-11 18:17:15 · 2399 阅读 · 0 评论 -
线性表的合并、有序表(利用顺序表)的合并
线性表的合并【例1】求解一般集合的并集问题【问题描述】已知两个集合 A 和 B ,现要求一个新的集合 A=A U B ,例如,设A=(7,5,3,11)B=(2,6,3)合并后,A=(7,5,3,11,2,6)【问题分析】可以利用两个线性表 LA 和 LB 分别表示集合 A 和 B (即线性表中的数据元素为集合中的成员),这样只需要扩大线性表 LA ,将存在于 LB 中而...原创 2020-01-09 22:47:14 · 7761 阅读 · 0 评论 -
线性表-顺序表的基本操作
线性表的定义和特点线性表:由n(n≥0)个数据特性相同的元素构成的有限序列线性表中元素的个数n(n≥0)称为线性表的长度空表:n=0对于非空的线性表或线性结构,特点为:存在唯一的一个被称作"第一个"的数据元素存在唯一的一个被称作"最后一个"的数据元素除第一个之外,结构中的每个数据元素均只有一个前驱除最后一个之外,结构中的每个数据元素均只有一个后继线性表的抽象数据类型定义...原创 2020-01-08 00:20:54 · 2629 阅读 · 0 评论 -
数据结构基础知识
数据结构基础知识研究内容数据结构主要研究非数值计算问题,非数值计算问题无法用数学方程建立数学模型基本概念和术语数据:是客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符号的总称。数据元素:是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。有些情况下,也称为元素、记录等。数据项:是组成数据元素的、有独立含义的、不可分割的最小单位。数据对象:是性质相同的数...原创 2020-01-06 21:41:57 · 1641 阅读 · 0 评论