数据结构
文章平均质量分 77
steph_curry
这个作者很懒,什么都没留下…
展开
-
数据结构——树
树的存储:孩子双亲表示法:#define max_tree_size 100//孩子节点typedef struct CTNode{int child;//孩子节点下标struct CTNode *next;//指向下一个孩子节点的指针}*ChildPtr;typedef char ElemType;//表头结构typedef struct{ElemType data原创 2017-12-01 20:58:42 · 186 阅读 · 0 评论 -
字符串匹配之KMP算法
注:本文大部分内容转载于https://www.cnblogs.com/c-cloud/p/3224788.html。任务是:举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"?1.首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字转载 2017-12-29 17:54:36 · 165 阅读 · 0 评论 -
图之广度优先遍历
例如:有一个图如下所示(该图也作为程序的实例):广度优先搜索:#include#includeusing namespace std;#define INFINITY 65535struct MGraph{ char V[10]; int Edge[10][10]; int Vexnum; int Edgenum;};void Create转载 2017-12-30 15:32:14 · 324 阅读 · 0 评论 -
马踏棋盘问题初始版
将马随机放在国际象棋的Board[0~7][0~7]的某个方格中,马按走棋规则进行移动。,走遍棋盘上全部64个方格。编制非递归程序,求出马的行走路线,并按求出的行走路线,将数字1,2,…,64依次填入一个8×8的方阵,输出之。#include#includeusing namespace std;#define X 8#define Y 8int chess[X][Y];//判断转载 2017-12-30 13:22:01 · 194 阅读 · 0 评论 -
图之深度优先遍历
#includeusing namespace std;typedef char VertexType; /* 顶点类型应由用户定义 */typedef int EdgeType; /* 边上的权值类型应由用户定义 */#define MAXSIZE 9 /* 存储空间初始分配量 */#define MAXEDGE 15#define MAXVEX 9#define INFINI转载 2017-12-30 10:58:01 · 220 阅读 · 0 评论 -
图之邻接表存储实现
之前我们介绍过图的邻接矩阵存储法,它的空间和时间复杂度都是N2,现在我来介绍另外一种存储图的方法:邻接表,这样空间和时间复杂度就都是M。对于稀疏图来说,M要远远小于N2。先上数据,如下。1234564 51 4 94 3 81 2 52 4 61原创 2017-12-29 21:18:04 · 471 阅读 · 0 评论 -
二叉树
二叉树:或为空,或由根节点及左右子树构成。每个节点最多可以有两棵子树。左右子树是有顺序的,不可颠倒满二叉树:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。满二叉树的叶子只可以出现在最后一层完全二叉树:若设二叉树的深度为h,除第 h 层外,其它各翻译 2017-12-28 20:21:27 · 171 阅读 · 0 评论 -
字符串之BP算法
即暴风(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。BF算法是一种蛮力算法。#include#includeusing namespace std;int BP(s原创 2017-12-28 22:43:55 · 492 阅读 · 0 评论 -
树的表示
1、双亲表示法#define MAX_SIZE 100typedef int ElemType;struct PTNode{ int parent;//双亲位置 ElemType data;//结点数据};struct PTree{ PTNode nodes[MAX_SIZE]; int r;//根节点位置 int n;//结点总数};优点原创 2017-12-28 13:13:42 · 145 阅读 · 0 评论 -
队列的基础知识
#include#include "stdlib.h"#includeusing namespace std;typedef char ElemType;struct QNode{ QNode *next; ElemType data;};typedef QNode *QueuePtr;struct LinkQueue{ QueuePtr front,rear;};翻译 2017-12-27 20:37:55 · 284 阅读 · 0 评论 -
栈之中缀表达式转换为后缀表达式
规则:转换过程需要用到栈,具体过程如下:1)如果遇到操作数,我们就直接将其输出。2)如果遇到操作符,则我们将其放入到栈中,遇到左括号时我们也将其放入栈中。3)如果遇到一个右括号,则将栈元素弹出,将弹出的操作符输出直到遇到左括号为止。注意,左括号只弹出并不输出。4)如果遇到任何其他的操作符,如(“+”, “*”,“(”)等,从栈中弹出元素直到遇到发现更低优先级的元素(或者栈为空)为止。弹出完这些元素原创 2017-12-27 19:42:42 · 282 阅读 · 0 评论 -
栈之二进制转化为十进制
#include#include "stdlib.h"#includeusing namespace std;#define STACK_SIZE 100#define STACKINCREMENT 10typedef char ElemType;struct sqStack{ ElemType *top; ElemType *base; ElemType stackSiz原创 2017-12-26 16:46:09 · 313 阅读 · 0 评论 -
双向链表之字母表变起点打印
26个字母的字母表,给一个起点,则从该起点以此打印字母表。如3:,则:DEF……XYZABC再比如-3,则:XYZABC……UVW#include#includeusing namespace std;typedef char ElemType;typedef int Status;#define ERROR 0;#define OK 1;struct Node原创 2017-12-25 21:28:44 · 187 阅读 · 0 评论 -
栈之逆波兰式计算
逆波兰式(Reverse Polish notation,RPN,或逆波兰记法),也叫后缀表达式(将运算符写在操作数之后)如:我们平时写a+b,这是中缀表达式,写成后缀表达式就是:ab+(a+b)*c-(a+b)/e的后缀表达式为:ab+c*ab+e/-#include#include "stdlib.h"#include#include "ctype.h"using name原创 2017-12-26 23:32:21 · 344 阅读 · 0 评论 -
拉丁方阵
问题描述: n × n 的方阵,在这种 n × n 的方阵里,恰有 n 种不同的元素,每一种不同的元素在同一行或同一列里只出现一次。循环链表,第一次遍历从头节点开始,打印第一行,以后每行都从下一个节点开始遍历。#include#includeusing namespace std;typedef int ElemType;struct Node{ Node* ne原创 2017-12-25 19:54:15 · 481 阅读 · 0 评论 -
循环链表之约瑟夫问题
约瑟夫环问题:一圈共有N个人,开始报数,报到M的人自杀,然后重新开始报数(自杀的人的下一位),问最后自杀的人是谁?这里取N=41,M=3.#include#includeusing namespace std;typedef int ElemType;struct Node{ Node* next; ElemType data;};typedef Node L转载 2017-12-25 16:18:26 · 209 阅读 · 0 评论 -
魔术师发牌问题
*问题描述:魔术师手里一共有13张牌,全是黑桃,1~13.*********魔术师需要实现一个魔术:这是十三张牌全部放在桌面上(正面向下), ********第一次摸出第一张,是1,翻过来放在桌面上。 ******第二次摸出从上往下数第二张,是2,翻过来 放在桌面上,(第一张放在最下面去,等会儿再摸), *****第三次摸出从上往下数第三张,是3,翻过来放在桌面上,(第一张和第原创 2017-12-25 19:42:04 · 175 阅读 · 0 评论 -
最小生成树Prim算法
在连通网的所有生成树中,所有边的代价和最小的生成树,称为最小生成树Prim算法原理:图的所有顶点集合为V;初始令集合u={s},v=V−u;在两个集合u,v能够组成的边中,选择一条代价最小的边(u0,v0),加入到最小生成树中,并把v0并入到集合u中。重复上述步骤,直到最小生成树有n-1条边或者n个顶点为止实现:#include#includeusing nam转载 2017-12-30 16:47:36 · 147 阅读 · 0 评论