
数据结构基础记
数据结构基础知识
Only you, only you!
这个作者很懒,什么都没留下…
展开
-
第七章 图(最小生成树之prime算法和 kruskal算法)
最小生成树最小生成树定义引用来源 所谓最小生成树,就是在一个具有N个顶点的带权连通图G中,如果存在某个子图G’,其包含了图G中的所有顶点和一部分边,且不形成回路,并且子图G’的各边权值之和最小,则称G’为图G的最小生成树。 由定义我们可得知最小生成树的三个性质: •最小生成树不能有回路。 •最小生成树可原创 2017-12-09 15:06:11 · 3873 阅读 · 6 评论 -
数据结构小知识点补充
1、怎么判断某二叉树是否是完全二叉树//判断是否是完全二叉树,该问题可以通过层序遍历的方法来解决,//不管当前结点是否有左右孩子,都入队列,如果在读入一个空指针后,//又读入一个非空指针(对应的情况是flag先变成1,后碰到非空指针),//这种情况下,就不是完全二叉树了。否则必定是完全二叉树。bool is_complete_bi_tree(bi_tree T){ queueq原创 2018-01-25 18:46:04 · 182 阅读 · 0 评论 -
第七章 图(拓扑排序与关键路径)
拓扑排序拓扑排序是将有向无环图的每个顶点排成一个线性序列。 经典的例子就是AOV网大学四年课程规划的例子。 AOV网 在现代化管理中,人们常用有向图来描述和分析一项工程的计划和实施过程,一个工程常被分为多个小的子工程,这些子工程被称为活动(Activity),在有向图中若以顶点表示活动,有向边表示活动之间的先后关系,这样的图简称为AOV网。以计算机软件工程专业为例,把该专业的大学四年课程放在一原创 2017-12-10 20:50:46 · 1215 阅读 · 0 评论 -
第六章 树和二叉树
基本知识点名词见课本树和二叉树的性质1.任何一棵含有n(n>0)个结点的二叉树恰有n-1条边 2.深度为h的二叉树至多有2的h次方减1个结点(每层至多2的h-1次方个结点) 3.设二叉树的结点个数为n,深度是h,则[log2(n+1)]<=h<=n 4.完全二叉树的定义(对比满二叉树) 5.如果对一棵有n个结点的完全二叉树的结点,按层次次序编号(从上到下,从左到右),则对任一结点i,有下面结原创 2017-11-10 11:27:22 · 484 阅读 · 0 评论 -
实验(变位字谜 )
主程序:#include"游戏函数.h"int main() { play_puzzle(); return 0;}头文件:标头.h#pragma once#include<iostream>#include<string>#include<cstdlib>using namespace std;typedef char elem_type;const int LIST_SI原创 2017-12-19 22:04:59 · 899 阅读 · 0 评论 -
实验(堆栈)
本实验主要是栈的基本操作。包括顺序栈,链栈,及用栈实现后缀表达式求值,以及实现括号匹配的检验。 程序代码全部是先给出主函数.cpp代码部分,后面跟着的是.h文件。顺序栈#include"sq_stack_test.h"int main(){ sq_stack stack; sq_stack_init(stack); for (int i = 1; i <= 6; i++原创 2017-12-19 21:56:55 · 582 阅读 · 0 评论 -
实验(表达树)
本实验主要实现的功能如下。 1.把一个算术表达式变成一棵二叉树,并求值 2.利用表达树做数字逻辑课程中的半加器实验 3.交换表达树中的所有的左右子树,即实现表达式中每个运算符对应的两个操作数之间的交换实验环境是Windows10,Visual Studio 2017 具体程序源代码如下所示(主程序+几个头文件):#include"实验总控制.h"int main(){ //freo原创 2017-12-14 20:44:38 · 479 阅读 · 0 评论 -
实验(加权图)
下面是.cpp文件及.h文件/* 本实验是加权图,要求实现的功能是: 1.建立一个无向有权图 2.求图的路径矩阵(即求任意两个点之间的最短路径长度,Floyd算法) 3.测试图是否正确着色(任何邻接点不能涂一样的颜色,所有点扫一遍即可) 4.测试是否每个点的度数都是偶数(如果每个点的度数都是偶数,并且是连通图, 那么,删除任意一条边之后还是连通图)原创 2017-12-19 21:35:14 · 928 阅读 · 3 评论 -
第七章 图(最短路径算法:dijkstra,bellman-ford,floyd)
最短路径算法一之Dijkstra算法算法描述:在无向图 G=(V,E) 中,假设每条边 E[i] 的长度为 w[i],找到由顶点 V0 到其余各点的最短路径。 使用条件:单源最短路径,适用于边权非负的情况Dijkstra算法求最短路径具体过程图解 结合上图具体搜索过程,我绘出下表,方便理解该过程!下表是按照上图的搜索过程来绘制的,当然,存储图的时候,节点存储顺序的不同也会导致搜索的顺序不同,但是原创 2017-12-10 16:48:24 · 4744 阅读 · 0 评论 -
第七章 图(POJ3984图的DFS、BFS+记录路径问题)
迷宫问题 POJ - 3984定义一个二维数组: int maze[5][5] = {0, 1, 0, 0, 0,0, 1, 0, 1, 0,0, 0, 0, 0, 0,0, 1, 1, 1, 0,0, 0, 0, 1, 0,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。 I原创 2017-12-09 12:09:14 · 333 阅读 · 0 评论 -
第七章 图(邻接矩阵和邻接表建立图并实现DFS、BFS)
邻接矩阵实现广搜和深搜/* 邻接矩阵实现图的广搜和深搜*/#include<iostream>#include<queue>#define inf 1000000 //假设的无穷大#define vertex_max_num 100 //设的最大顶点数using namespace std;typedef struct { int v[vertex_max_num];//顶原创 2017-12-07 22:30:10 · 4200 阅读 · 1 评论 -
第五章 BF算法和KMP算法
BF算法#include<iostream>#include<cstring>using namespace std;//时间复杂度O(n*m)int BF_match(char *s,char *t){ int len1=strlen(s),len2=strlen(t); if(len1<len2) return -1; for(int i=0;i<=len1-len原创 2017-11-01 11:39:11 · 959 阅读 · 0 评论 -
第四章 栈和队列
栈的基本操作顺序栈头文件:sq_stack_test.h#include<iostream>#include<string>using namespace std;const int SIZE=100;typedef int elem_type;//定义栈typedef struct{ int *elem; int top; int size;}sq_stack;v原创 2017-11-01 11:23:36 · 280 阅读 · 0 评论 -
第二章 线性表
Microsoft Visual Studio 2012实现: 头文件:顺序表基本操作函数.h 源文件:顺序表.cpp顺序表基本操作函数.h#include<iostream>using namespace std;const int LIST_INIT_SIZE=100;const int LIST_INCREMENT=100;typedef struct{ int *elem;原创 2017-09-14 22:34:33 · 330 阅读 · 0 评论 -
第三章 内部排序
本文主要介绍选择排序,插入排序,起泡排序,快速排序,归并排序和基数排序,堆排序后续补充。分两方面写,一方面是代码实现,另一方面是思想内涵。代码实现:本文全部是按照非减排序#include<iostream>using namespace std;void print(int a[],int n){ for(int i=0;i<n;i++) cout<<a[i]<<" ";原创 2017-10-17 23:07:10 · 312 阅读 · 0 评论 -
第1章 绪论
【解题指导与示例 7】/* 下面前四种方案代码实现借鉴了《数据结构及应用算法教程》(严蔚敏 陈文博) 本程序功能是实现一个长度为n的数组左移p位,且0<p<n(看下面代码注意此条件) a[0],a[1],...,a[n-1]变为a[p],a[p+1],...,a[n-1],a[0],..,a[p-1] 测试以n=10,p=6,a[i]=i+1,i=0,1,2,...,9原创 2017-09-13 23:25:33 · 257 阅读 · 0 评论