![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 87
inf_lmg
这个作者很懒,什么都没留下…
展开
-
【数据结构基础】线性表的顺序存储结构
线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。线性表的顺序存储的结构代码:#define MAXSIZE 20 /* 存储空间初始分配量 */typedef int ElemType; /* ElemType类型根据实际情况而定,这里假设为int */typedef struct{ ElemType data[MAXSIZE];原创 2015-01-07 19:34:30 · 368 阅读 · 0 评论 -
【数据结构】最小生成树
最小生成树:构造连通网的最小代价生成树。(带权值的图为网结构,任意两顶点都是连通的图为连通图)找连通网的最小生成树,经典有两种算法:普利姆算法(Prim)和克鲁斯卡尔算法(Kruskal)。Prim算法:代码:结果: Kruskal算法:代码:结果:原创 2015-01-21 16:43:26 · 721 阅读 · 0 评论 -
【数据结构】邻接矩阵的深度与广度遍历(无向图)
图的邻接矩阵存储方式:使用两个数组,一个一维数组存储图中顶点信息,一个二维数组(邻接矩阵)原创 2015-01-21 10:59:27 · 3020 阅读 · 1 评论 -
【数据结构】邻接表的广度与深度遍历
邻接表: 代码:原创 2015-01-21 15:44:55 · 1434 阅读 · 0 评论 -
【数据结构】线索二叉树
线索二叉树:指向前驱和后继的指针称为线索,加上线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树(Threaded Binary Tree)。线索化:对二叉树以某种次序遍历使其变为线索二叉树称作是线索化。线索化的过程就是在遍历的过程中修改空指针的过程。 代码:#include "string.h"#include "stdio.h" #include "stdlib.原创 2015-01-19 19:54:01 · 542 阅读 · 0 评论 -
【数据结构】二叉树链式结构--遍历二叉树
树是n(n>=0)个结点的有限集。在任一颗非空数中:1)有且仅有一个根节点2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集,其中每一个集合也是一颗树,并且成为根的子树。 二叉树:n个结点的有限集合,该集合或者为空集(空),或者由一个根节点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。二叉树每个结点最多有两个孩子,所以为它设计一个数据域和两个指针域原创 2015-01-19 18:14:53 · 506 阅读 · 0 评论 -
【数据结构】二叉树的顺序存储结构--遍历二叉树
树是n(n>=0)个结点的有限集。在任一颗非空数中:1)有且仅有一个根节点2)当n>1时,其余结点可分为m(m>0)个互不相交的有限集,其中每一个集合也是一颗树,并且成为根的子树。 二叉树:n个结点的有限集合,该集合或者为空集(空),或者由一个根节点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。 二叉树及二叉树的遍历代码:#include "stdi原创 2015-01-10 16:00:54 · 1310 阅读 · 0 评论 -
【数据结构】模式匹配算法
模式匹配:子串的定位操作。模式匹配算法主要有:(1)朴素的模式匹配算法;(2)KMP模式匹配算法 (next数组);(3)改进的KMP模式匹配算法 (nextval数组); 比较:1,时间复杂度:朴素的模式匹配算法为O((n-m+1)*m),效率很差,KMP算法为O(m+n),大大避免重复遍历情况。2,改进的KMP算法相对于KMP算法避免了特殊情况下的的多原创 2015-01-10 11:54:56 · 1013 阅读 · 0 评论 -
【数据结构】串
串:是由零个或多个字符组成的有限序列,又名叫字符串。 串的抽象数据模型:StrAssign( T, *chars ); /* 生成串 */StrCopy( T,S ); /* 串S复制给串T */ClearString( S ); /* 串清空 */StringEmpty( S ); /* 串为空,返回true,否则返回false */St原创 2015-01-10 11:26:21 · 647 阅读 · 0 评论 -
【数据结构基础】循环队列
循环队列:头尾相接的顺序存储结构的队列。循环队列的顺序存储结构:typedef int QElemType; /* 这里假设为int */typedef struct { QElemType data[MAXSIZE]; int front; /* 头指针 */ int rear; /* 尾指针,若队列不空,指向队列尾元素的下一个位置原创 2015-01-09 18:33:37 · 451 阅读 · 0 评论 -
【数据结构基础】线性表的链式存储结构--单链表
n个结点链结成一个链表,即为线性表的链式存储结构,因为此链表的每个结点中只包含一个指针域,所以叫做单链表。 线性表的单链表存储结构:typedef struct Node{ ElemType data; struct Node *next;}Node;typedef struct Node *LinkList; /* 定义LinkList */ 单链原创 2015-01-07 21:16:58 · 502 阅读 · 0 评论 -
【数据结构基础】栈的链式存储结构
链栈的结构代码:typedef struct StackNode{ SElemType data; struct StackNode *next;}StackNode, *LinkStackPtr;typedef struct LinkStack{ LinkStackPtr top; int count;}LinkStack; 链栈的进栈原创 2015-01-08 22:20:44 · 315 阅读 · 0 评论 -
【数据结构】关键路径算法
几个定义:AOV网:顶点表示活动,弧表示活动之间的优先关系的有向图。AOE网:顶点表示事件,有向边表示活动,边上的权值表示活动的持续时间的网(带权值的图称为网)。路径长度:路径上各个活动所持续的时间之和。关键路径:从源点到汇点具有最大长度的路径。关键活动:在关键路径上的活动。算法原理:找到所有活动的最早开始时间和最晚开始时间,并且比较它们,如果相等就意味着此活动是关键活动,原创 2015-01-26 10:33:10 · 2254 阅读 · 0 评论 -
【数据结构基础】栈--顺序存储结构
栈是限定仅在表尾进行插入和删除操作的线性表。栈的结构定义:typedef int SElemType; /* SElemType类型根据情况而定,这里假设为int */typedef struct{ SElemType data[MAXSIZE]; int pop; /* 栈顶指针 */}SqStack;进栈:/* 插入元素e为原创 2015-01-07 21:40:44 · 390 阅读 · 0 评论 -
【数据结构基础】队列的链式存储结构
队列:是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。链队列的结构:typedef int QElemType; /* 这里假设为int */typedef struct QNode; /* 结点结构 */{ QElemType data; struct QNode *next;} QNode, *QueuePtr;typedef stru原创 2015-01-08 22:44:48 · 372 阅读 · 0 评论 -
【数据结构】最短路径算法
最短路径:对于非网图来说,最短路径指两顶点之间经过的边数最少的路径。而对于网图来说,最短路径指的是两顶点之间经过的边上权值之和最少的路径。这里介绍两种网图的最短路径算法:迪杰斯特拉算法(Dijkstra)和弗洛伊德算法(Floyd)。Dijkstra算法: 算法并不是一下子就求出v0到v8的最短路径,而是一步步求出它们之间顶点的最短路径,过程中都是基于已经求出的最短路原创 2015-01-23 14:55:46 · 1077 阅读 · 0 评论 -
【数据结构】拓扑排序算法
对AOV网进行拓扑排序的基本思路是: 从AOV网中选择一个入度为0的顶点输出,然后删去此顶点,并删除以此顶点为尾的弧,继续重复此步骤,直到输出全部顶点或者AOV网中不存在入度为0的顶点为止。AOV网及邻接表数据结构:代码:#include "stdio.h"#include "stdlib.h"#include "io.h"#include "math.h原创 2015-01-26 10:03:44 · 961 阅读 · 0 评论