数据结构
吴珝君
这个作者很懒,什么都没留下…
展开
-
关于图的几个小问题
1、DFS遍历一个无环有向图,并在DFS算法退栈返回的时候打印相应的顶点,则输出的顶点序列是逆拓扑排序。分析:当有向图中不存在环的时候,也可以采用深度优先遍历的方式进行拓扑排序,由于图中不存在环,最先出栈的是出度为0的顶点,也就是拓扑排序的最后一个顶点,因此按照退栈顺序打印的顶点是逆拓扑排序。2、深度优先遍历和广度优先遍历可以判断有向图中是否有环3、关键活动构成了关键路径。关键路径是...原创 2019-02-02 16:13:07 · 800 阅读 · 0 评论 -
图--判断是否有环
(1)拓扑排序#include <iostream>#include <stack>using namespace std;//// aov.h// aov//// Created by 吴珝君 on 2018/12/25.// Copyright © 2018年 闲着也是贤者. All rights reserved.///***...原创 2019-02-02 15:14:28 · 309 阅读 · 0 评论 -
二叉树的遍历的应用
//二叉树的定义typedef struct _BinaryTreeNode{ char data; //int ltag , rtag; struct _BinaryTreeNode *lchild; struct _BinaryTreeNode *rchild; }BTNode;/*1、表达式(a-(b+c)*(d/e))存储在存储在以二叉链表为存储结构的二叉...原创 2019-01-22 21:17:59 · 449 阅读 · 0 评论 -
二叉树的前序中序后序线索化及其遍历
//线索二叉树的结点结构typedef struct _ThreadBinaryTreeNode{ int data; int ltag , rtag; struct _ThreadBinaryTreeNode *lchild; struct _ThreadBinaryTreeNode *rchild; }TBTNode; vo...原创 2019-01-22 15:39:56 · 276 阅读 · 0 评论 -
拓扑排序
#include <iostream>#include <stack>using namespace std;//// aov.h// aov//// Created by 吴珝君 on 2018/12/25.// Copyright © 2018年 闲着也是贤者. All rights reserved.///*************...原创 2019-02-01 01:24:09 · 130 阅读 · 0 评论 -
弗洛伊德算法--多源最短路径
//图的存储--邻接矩阵#define MAXSIZE 100#define INF 65535typedef struct { int edges[MAXSIZE][MAXSIZE];//存放边的关系的数组 int n,e;//n是顶点个数 e是边的个数 char vex[MAXSIZE];//存放顶点信息}MGrap; //创建图。//单元最短路径...原创 2019-01-31 23:46:42 · 402 阅读 · 0 评论 -
关于KMP及其改进的思考
(1)首先推荐我见过的最好的KMP算法详解(转载自知乎:https://www.zhihu.com/question/21923021/answer/281346746):有些算法,适合从它产生的动机,如何设计与解决问题这样正向地去介绍。但KMP算法真的不适合这样去学。最好的办法是先搞清楚它所用的数据结构是什么,再搞清楚怎么用,最后为什么的问题就会有恍然大悟的感觉。我试着从这个思路再介绍一下。...原创 2019-01-16 15:28:47 · 1433 阅读 · 0 评论 -
迪杰斯特拉--单源最短路径算法实现
//图的存储--邻接矩阵#define MAXSIZE 100#define INF 65535typedef struct { int edges[MAXSIZE][MAXSIZE];//存放边的关系的数组 int n,e;//n是顶点个数 e是边的个数 char vex[MAXSIZE];//存放顶点信息}MGrap; //创建图。void creat...原创 2019-01-31 18:05:45 · 294 阅读 · 0 评论 -
树的遍历_(前序(递归和非递归)、中序(递归和非递归)、后续(递归和非递归)、层次、深度(递归和非递归) )
//树中节点的定义typedef struct _BTNode{int data;struct _BTNode *lchild;struct _BTNode *rchild;}BiTNode ,*BiNTree;//树的层次遍历-- 先进先出 需要借助队列来实现void BinaryTreeLevelOrder(BiNTree root){ queue<BiTNo...原创 2019-01-21 21:50:17 · 132 阅读 · 0 评论 -
排序专题4---计数排序
知识点补充:(1)基于比较的排序基于比较的排序有很多 如:插入排序、选择排序、选择排序、归并排序基于非比较的排序 如:基数排序、桶排序、计数排序对于n个待排序元素,在未比较时,可能的正确结果有n!种。 在经过一次比较后,其中两个元素的顺序被确定,所以可能的正确结果剩余n!/2种(确定之前两个元素的前后位置的情况是相同,确定之后相当于少了一半的可能性)。 依次类推,直到经过...原创 2019-01-09 19:31:14 · 164 阅读 · 0 评论 -
排序专题之4--稳定性 比较次数与交换次数
在学习排序算法时,出于效率考虑,经常容易看到算法的稳定性、比较次数及交换次数研究。特别是考试或者公司笔试题,经常出现这样的题目。由于排序算法有很多种,平时提出大家才能说出个大概,但真要考查这些细节,估计很多人都说不准确。博主下决心写此文章,彻底探查清楚这些问题,与大家共享之。 首先说明稳定性是指相同元素在排序后相对位置保持不变。个人感觉稳定性的含义在于更广泛情形下,排序元素...原创 2019-01-09 15:21:17 · 2015 阅读 · 0 评论 -
排序专题3(性能分析与专题小结)
public class Main { //实现找出最大元素和次大元素的算法 private static int getBig(int [] a) { int len = a.length; int big_1 = a[0]; int big_2 = Integer.MAX_VALUE; if(le...原创 2019-01-09 13:11:22 · 137 阅读 · 0 评论 -
排序算法之2
public class Main { public static void main(String[] args) { int [] a ={3,5,6,7,8,23,33,44,42,34,56,-1,90,45,11,54}; // MergeSort(a,0,a.length-1); // HeapSort(a); ...原创 2019-01-08 23:07:37 · 269 阅读 · 0 评论 -
排序专题之1
public class Main { public static void main(String[] args) { int [] a ={3,5,6,7,8,11,15}; // MergeSort(a,0,a.length-1); // HeapSort(a); // getBig(a); fi...原创 2019-01-08 20:34:11 · 138 阅读 · 0 评论 -
最小生成树的算法
//邻接矩阵typedef struct{ int no;//顶点信息 char info;}VertexType;typedef struct{ int edges[MAX_Size][MAX_Size];//存放边的关系 char vex[MAX_Size];//存放顶点的值 int n ,e;//分别为顶点数目和边的数目}MGrap;//建立有向图的邻接矩阵表...原创 2019-01-23 22:17:50 · 258 阅读 · 0 评论 -
图的广度和深度优先遍历(邻接矩阵)
typedef struct{ int edges[MAX_Size][MAX_Size];//存放边的关系 char vex[MAX_Size];//存放顶点的值 int n ,e;//分别为顶点数目和边的数目}MGrap;/建立有向图的邻接矩阵表示void createGrap(MGrap *g){ cout <<"请输入顶点数和边的数"<...原创 2019-01-23 19:03:05 · 553 阅读 · 0 评论 -
栈的应用--中缀与后缀表达式
算法流程 :中缀转后缀1.顺序扫面整个中缀表达式2.中缀表达式的元素分为两种类型,操作数和操作符。如果当前元素为操作数,则直接将该元素存储后缀表达式当中3.如果当前操作的事操作符,那么要分几种情况 3.1 如果当前的运算符是(“(”)则直接将其入栈。 3.2如果是(“)”),则将栈中的操作符出栈,直到遇到“)” (这里需要强调的是括号是不需要进入后缀表达式的) 3.3...原创 2019-01-17 15:11:12 · 194 阅读 · 0 评论 -
有向图的遍历(深度遍历和广度遍历)
typedef struct _BinaryTreeNode{ char data; //int ltag , rtag; struct _BinaryTreeNode *lchild; struct _BinaryTreeNode *rchild; }BTNode; /创建邻接矩阵 假定这里是有向图void createMGraph(AGraph *a){//...原创 2019-01-23 16:05:15 · 5017 阅读 · 0 评论