
数据结构
文章平均质量分 73
7900X
用力奔跑才能尽情呼吸
展开
-
BF和KMP
//BF算法#include<bits/stdc++.h>using namespace std;int BF(char S[ ], char T[ ]);int main(){ char S[]="abcabcabcaccb"; char T[]="abcacc"; int index=BF(S,T); for (int i = 1; i...原创 2018-12-18 10:49:51 · 491 阅读 · 0 评论 -
KMP算法next数组的求法:
#include <iostream>#include <vector>#include <cstring>using namespace std;void MakeNext(const string &P, vector<int> &next){ int q,k; int m = P.size(); ...原创 2018-07-11 18:44:04 · 327 阅读 · 0 评论 -
BF算法
#include <iostream>#include<string>using namespace std;int BF(string S,string T) { int i=0; int j=0; while(S[i]!='\0' && T[i]!='\0') { if(S[i]==T[j]) { i++; j++;...原创 2018-07-15 11:52:57 · 418 阅读 · 0 评论 -
利用栈判断回文字符串
#include<iostream>#include<cstring>#include<stack>using namespace std;int main(){ char str[100]; stack<char> s; cin>>str; int len=strlen(str); ...原创 2018-08-03 10:26:47 · 840 阅读 · 0 评论 -
判断回文字符串
#include <iostream>#include<cstring>using namespace std;int main(){ char a[100]; int k = 0,flag = 0; cin>>a; k = strlen(a); for(int i=0; i<k; i++,k--) ...原创 2018-07-16 10:20:48 · 444 阅读 · 0 评论 -
用十字链表实现两个稀疏矩阵的和矩阵差矩阵乘矩阵
#include <stdio.h>#include <malloc.h>#include<stdlib.h>typedef int ElemType;// 稀疏矩阵的十字链表存储表示typedef struct OLNode{ int i,j; // 该非零元的行和列下标 ElemType e; // 非零元素值 ...转载 2018-07-16 10:20:59 · 626 阅读 · 0 评论 -
稀疏矩阵十字链表压缩方法
#include <stdio.h>#include <malloc.h>#include<stdlib.h>typedef int ElemType;// 稀疏矩阵的十字链表存储表示typedef struct OLNode{ int i,j; // 该非零元的行和列下标 ElemType e; // 非零元素值 ...转载 2018-07-15 12:01:47 · 667 阅读 · 0 评论 -
稀疏矩阵(三元组顺序表存储)6种操作的实现
/**任务描述:针对稀疏矩阵,实现10个基本操作* 1:建立稀疏矩阵 ;* 2:输出稀疏矩阵 ;* 3:转置稀疏矩阵 ;* 4:稀疏矩阵相加 ;* 5:稀疏矩阵相减;* 6:稀疏矩阵相乘 ;主要函数:* 1.void CreateMatrix(Matrix &M);//创建矩阵* 2.void Output(Matrix M);//输出矩...转载 2018-07-15 11:59:52 · 2924 阅读 · 0 评论 -
简单邻接表的BFS和DFS
#include<stdio.h>#include<stdlib.h>#define MaxVex 255#define TRUE 1#define FALSE 0typedef char VertexType; //顶点类型typedef int Bool;Bool visited[MaxVex]; //全局数组,记录图中节点访问状态typ...原创 2018-06-19 14:09:00 · 653 阅读 · 0 评论 -
简单邻接矩阵的DFS和BFS
#include<stdio.h>#include<string.h>#define MAXN 10int visit[MAXN]; //设置一个访问标志数组int G[MAXN][MAXN]; //设置一个邻接矩阵void DFS(int i,int N) //深度优先遍历{ int j; visit[i]=1; print...原创 2018-06-19 14:05:54 · 682 阅读 · 0 评论 -
最短路径Dijkstra算法
#include<iostream>using namespace std;int a[100][100]; //邻接矩阵int book[10]= {0}; //book数组用来标记哪些点目前是最短的距离int dist[10]; //dist数组用来存储第一个顶点到其余顶点的最短距离const int inf=99999999; //假设这个数表示无...原创 2018-06-06 15:33:58 · 306 阅读 · 0 评论 -
最短路径Floyd算法
#include<iostream>using namespace std;int a[10][10]; //存储点与点之间的距离int n; //顶点数int e; //边数const int inf=999999999; //无穷大int x,y,z; //x到y的距离为zint i,j,k; //循环变...原创 2018-06-06 15:28:21 · 200 阅读 · 0 评论 -
6-11 先序输出叶结点
本题要求按照先序遍历的顺序输出给定二叉树的叶结点。函数接口定义:void PreorderPrintLeaves( BinTree BT );其中BinTree结构定义如下:typedef struct TNode *Position;typedef Position BinTree;struct TNode{ ElementType Data; BinTree Left;...原创 2018-05-22 18:00:01 · 1059 阅读 · 0 评论 -
7-1 最大子列和问题
给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。本题旨...原创 2018-05-15 19:37:44 · 473 阅读 · 0 评论 -
二叉树的基本操作:创建,遍历,删除..........................
本程序实现的是:0.先序遍历创建一棵二叉树1.递归先序遍历2.递归中序遍历3.递归后序遍历4.非递归的先序遍历(3)5.非递归的中序遍历(2)6.非递归的后序遍历(2)7.非递归的层序遍历(2)8.二叉树的深度(3)9.二叉树的节点数10.判断是否为完全二叉树11.删除节点为x的根节点12.将二叉树节点存储在一维数组代码如下:#include<iostream>#include<...原创 2018-05-14 19:34:39 · 351 阅读 · 0 评论 -
7-7 六度空间
“六度空间”理论又称作“六度分隔(Six Degrees of Separation)”理论。这个理论可以通俗地阐述为:“你和任何一个陌生人之间所间隔的人不会超过六个,也就是说,最多通过五个人你就能够认识任何一个陌生人。”如图1所示。图1 六度空间示意图“六度空间”理论虽然得到广泛的认同,并且正在得到越来越多的应用。但是数十年来,试图验证这个理论始终是许多社会学家努力追求的目标。然而由于历史的原因...原创 2018-06-19 14:12:09 · 476 阅读 · 0 评论 -
7-11 关键活动
假定一个工程项目由一组子任务构成,子任务之间有的可以并行执行,有的必须在完成了其它一些子任务后才能执行。“任务调度”包括一组子任务、以及每个子任务可以执行所依赖的子任务集。比如完成一个专业的所有课程学习和毕业设计可以看成一个本科生要完成的一项工程,各门课程可以看成是子任务。有些课程可以同时开设,比如英语和C程序设计,它们没有必须先修哪门的约束;有些课程则不可以同时开设,因为它们有先后的依赖关系,比...原创 2018-06-19 14:13:03 · 445 阅读 · 0 评论 -
7-32 哥尼斯堡的“七桥问题”
哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥,如下图所示。可否走过这样的七座桥,而且每桥只走过一次?瑞士数学家欧拉(Leonhard Euler,1707—1783)最终解决了这个问题,并由此创立了拓扑学。这个问题如今可以描述为判断欧拉回路是否存在的问题。欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个无向图,问是否存在欧拉回路?输入...原创 2018-07-08 11:42:30 · 937 阅读 · 0 评论 -
邻接表的C++模板机制
建立ALGraph类ALGraph.h#ifndef ALGRAPH_H#define ALGRAPH_Hint visited[100];const int MaxSize=10;struct ArcNode //定义边表节点{ int adjvex; //临界点域 ArcNode * next; //指针域};template<cla...原创 2018-06-20 15:44:39 · 528 阅读 · 0 评论 -
无向图邻接矩阵转邻接表,邻接表转邻接矩阵
#include <stdio.h>#include <malloc.h>#include<iostream>using namespace std;typedef int InfoType;#define MAXV 100 //最大顶点个数#define INF 32767 //INF表示∞...原创 2018-06-19 14:19:26 · 10143 阅读 · 1 评论 -
7-9 旅游规划
有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。输入格式:输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市...原创 2018-06-19 14:16:11 · 432 阅读 · 0 评论 -
7-10 公路村村通
现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式:输入数据包括城镇数目正整数N(≤)和候选道路数目M(≤);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式:输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出−,表...原创 2018-06-19 14:15:08 · 351 阅读 · 0 评论 -
给定一棵二叉树的前序遍历和中序遍历,求其后序遍历(提示:给定前序遍历与中序遍历能够唯一确定后序遍历)
二叉树的前序、中序、后序遍历的定义: 前序遍历:对任一子树,先访问根,然后遍历其左子树,最后遍历其右子树; 中序遍历:对任一子树,先遍历其左子树,然后访问根,最后遍历其右子树; 后序遍历:对任一子树,先遍历其左子树,然后遍历其右子树,最后访问根。 样例输入:ABCBACFDXEAGXDEFAG样例输出:B C AX E D G A F示例代码...原创 2018-05-19 23:11:53 · 8656 阅读 · 1 评论