自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

没有对象也没有new方法的大白

if(you are watching){printf(

  • 博客(15)
  • 收藏
  • 关注

原创 最短路径的经典算法-Dijkstra算法

最短路径:指两顶点之间经过的边上的权值之和最小的路径,并称路径的第一个顶点为源点,最后一个顶点为终点 求最短路径的算法通常都依赖一种性质:两点之间的最短路径也包含了路径上 其他顶点之间的最短路径 带权有向图G的最短问题分两类: 单源最短路径:即某一顶点到其他各顶点的最短路径,可用Dijkstra算法求 任意一对顶点最短路径:可通过Floyd-Warshall算法求解 Dijkstra算法(...

2018-04-07 22:30:45 424

原创 最小生成树的两种经典算法--prim算法和kruskal算法

一个连通图的生成树是图的一个极小连通子图,它包含所有顶点,但只有足以构成树的n-1条边 这意味着对生成树来说,砍去它的任何一条边,就会使生成树变成非连通图,若给他增加一条边就会形成一条回路 最小生成树:权值最小的那颗生成树叫~ 最小生成树的性质: 最小生成树并不唯一,准确的来说是最小生成树的树形并不唯一 最小生成树的权值之和唯一,并且是最小的 最小生成树的边数=顶点数-1 求最小生成树有两种经...

2018-04-07 21:35:55 3889

原创 二叉排序树的创建,查找和插入

二叉排序树的查找,插入和创建代码 #include <iostream> #include<stdlib.h> typedef struct BTNode{ int data; BTNode *lchild; BTNode *rchild; }BTNode; int SearchBTS(BTNode *T,int key,BTNode *f,...

2018-04-16 21:34:59 993

原创 栈和队列的基本操作

顺序栈的创建和访问 链栈的创建和访问 循环队列的创建和访问 链队的创建和访问 代码如下 #include <iostream> #include<stdlib.h> #define maxSize 100 typedef struct {//顺序栈定义 int data[maxSize]; int top; }SqStack; typedef...

2018-04-13 10:47:35 202

原创 双链表的基本操作--创建,插入,删除,查找

都挺简单的,就是要注意,无论单链表还是双链表,删除时都要遵循先链后断 双链表插入和删除时,指针可直接移到要插入或者的位置,不用像单链表一定要移到其前驱结点,因为双链表每个结点自带前驱指针 #include <iostream> #include<stdlib.h> typedef struct DLNode{ int data; struct DLNo...

2018-04-10 00:52:02 267

原创 拓扑排序算法

什么是拓扑排序 对一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。 背景知识 一个较大的工程往往被划分成许多子工程,我们把这些子工程称作活动。在整个工程中,有些子工程(活动)必...

2018-04-09 23:51:32 392

原创 单链表的基础操作----链表的创建,插入,查询和删除

需要注意:插入和删除结点时,我们要找到相应位置的前驱结点,遍历结点的循环条件要注意这个问题 单链表的删除操作需要注意的地方: 删除之前必须先找到要删结点的前驱结点,所以在查找判断条件要用p->next!=NULL 任何要改变链表本身的操作(如增加,删除,),都不能乱动头结点的位置,而是需要额外定义一个指针指向头结点,然后用这个指针操作 #include <iostream&g...

2018-04-09 23:27:44 669

原创 单链表的查找和删除

单链表的删除操作需要注意的地方: 删除之前必须先找到要删结点的前驱结点,所以在查找判断条件要用p->next!=NULL 任何要改变链表本身的操作(如增加,删除,),都不能乱动头结点的位置,而是需要额外定义一个指针指向头结点,然后用这个指针操作 #include <iostream> #include<stdlib.h> typedef struct LNod...

2018-04-09 22:18:28 805

原创 单链表的头插法和尾插法创建及两链表的融合

单链表的两种创建方法:尾插法和头插法 两个数据域递增的单链表融合成一个依旧递增的单链表,很简单了注意新链表头结点的就ok了 简单的很,直接看代码吧 #include <iostream> #include<stdlib.h> #include<algorithm> #define maxSize 100 using namespace std; t...

2018-04-09 00:19:22 636

原创 求二叉树的最大宽度

求二叉树中结点最多的那层的结点数 代码如下 #include <iostream> #include <stdlib.h> #define maxSize 100 typedef struct BTNode{//二叉树结点 char data; struct BTNode* lchild; struct BTNode* rchild; ...

2018-04-08 21:13:50 922

原创 根据前序序列+中序序列或根据中序序列+后序序列还原二叉树

已知先序序列存在pre[l1...r1]中 ,中序序列存在in[l2...r2]中,二叉树的结点数据域不等,构造二叉树并求其后序遍历序列 已知中序序列存在in[l2...r2]中,后序序列存在post[l1...r1],二叉树的结点数据域不等,构造二叉树并求其前序遍历序列 代码如下 #include <iostream> #include <stdlib.h> t...

2018-04-08 16:17:07 1025

原创 二叉树的前中后序遍历非递归实现及层次遍历队列实现

我的上篇博客给出了二叉树的创建和前中后序遍历算法,但它们都是基于递归实现的,虽然代码简洁,但理解起来有点费劲,想当初第一次看到这么简洁的遍历算法后,心里连连跳出三个卧槽,实在是简洁的不像话,这里先给出我自己对递归的理解. 递归像剥洋葱,假设我们剥了一层皮后还要洗干净这层皮,这一步才算完成,那么我们在剥完一次皮后,本来按步骤要去洗的,但剥完发现还有一层皮要剥,于是我们就先不洗了,而是立马把新出现的...

2018-04-08 11:34:16 3586 6

原创 二叉树的创建及前中后序遍历和层次遍历

树是N个结点的有限集合,N=0时称为空树,任意一颗非空树满足以下条件: 有且只有一个特定的称为根的结点 当N>1时,其他结点可分为m个互不相交的悠闲集合,其中每个集合本身又是一个棵树,并称为根节点的子树 树的定义是递归的,是一种递归的数据结构,树作为一种逻辑结构,同时也是一种分层结构,具有以下两特点: 树的根节点没有前驱结点,除根之外的所有结点有且只有一个前驱结点 树中所有结点可有零个...

2018-04-08 09:43:17 645

原创 图的创建和遍历

图的定义: 由顶点的有穷非空集合和顶点之间边的集合组成的数据类型 图的表示:G(V,E),G表示一个图,V是图G的顶点集合,E为图G的边的集合 图的逻辑结构:多对多 图的存储结构:邻接矩阵 邻接表 十字链表 邻接多重表 图的一些无聊术语: 顶点i与j之间的边无方向,则称此边为无向边(Edge),无向边构成的图成为无向图,无序偶表示(i,j) 若i到j有方向,则叫有向边,也成为弧(Arc),i叫...

2018-04-07 17:21:27 2076

原创 关键路径

在一个表示工程的带权有向图中,用顶点表示事件,有向边表示活动,用边上的权值表示活动的持续事件,这种有向图我们称之为AOE网(Activity On Edge Network) AOE网中入度为0的顶点称为始点或源点,出度为0的顶点成为终点或汇点 AOE网是用来表示工程流程的,它带有明显的工程特性,如果在某顶点所代表的事情发生后,从该顶点出发的各活动才能开始,只有在进入某顶点的各活动都已经结束,该...

2018-04-07 12:03:19 422 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除