1 / 19
文档名称:

KMP模式匹配算法 (2).doc

格式:doc   大小:111KB   页数:19页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

KMP模式匹配算法 (2).doc

上传人:260933426 2022/4/17 文件大小:111 KB

下载得到文件列表

KMP模式匹配算法 (2).doc

相关文档

文档介绍

文档介绍:KMP模式匹配算法
需求分析
输入:模式串,主串
输出:一串值和匹配结果
功能要求:模式串的next值表与匹配结果
设计概要
main()
getnext()
myStrstr()
dest()
substr()
*temp='\0';
printf("匹配起始位置为 :%d\n",myStrstr(Dest,sub));
free(Dest);
free(sub);
return 0;
getchar();
}
四、调试过程
在调试过程中经常会有报错的情况,检查显示错误时发现大都是些丢掉分号或括号等由于粗心马虎等造成的小错误,因为这个程序比较简单,因此调试过程还算顺利。
五、用户使用说明
(1)首先输入模式串
(2)输入主串
(3)敲回车即输出next值
六、运行结果
Kruskal算法
需求分析
输入:无向图(顶点序列,边序列)
输出:一串字符和数值
功能要求:输出最小生成树的各组成边及最小生成树的权值
概要设计
main()
CreatGraph()
sort()
MiniSpanTree()
Find()
详细设计
#include<>
#include<>
#define M 20
#define MAX 20
typedef struct
{
int begin;
int end;
int weight;
}EdgeType;
typedef struct
{
int adj;
int weight;
}AdjMatrix[MAX][MAX];
typedef struct
{
AdjMatrix arc;
int vexnum, arcnum;
}MGraph;
void CreatGraph(MGraph *);
void sort(EdgeType* ,MGraph *);
void MiniSpanTree(MGraph *);
int Find(int *, int );
void CreatGraph(MGraph *G)
{
int i, j,n, m;
printf("bianshuhedingdianshu:");
scanf("%d %d",&G->arcnum,&G->vexnum);
for (i = 1; i <= G->vexnum; i++)
{
for ( j = 1; j <= G->vexnum; j++)
{
G->arc[i][j].adj = G->arc[j][i].adj = 0;
}
}
for ( i = 1; i <= G->arcnum; i++)
{
printf("\nshuruyoubiandedingdian:");
scanf("%d %d",&n,&m);
while(n < 0 || n > G->vexnum || m < 0 || n > G->vexnum)
{
printf("输入的数字不符合要求 请重新输入:");
scanf("%d%d",&n,&m);
}
G->arc[n][m].adj = G->arc[m][n].adj = 1;
getchar();
printf("\n%dhe%djianquanzhi:", n, m);
scanf("%d",&G->arc[n][m].weight);
}
printf("linjiejuzheng:\n");
for ( i = 1; i <= G->vexnum; i++)
{
for ( j = 1; j <= G->vexnum; j++)
{
printf("%d ",G->arc[i][j].adj);
}
printf("\n");
}
}
void sort(EdgeType EdgeTypes[],MGraph *G)
{
int i, j,t;
for ( i = 1; i < G->arcnum; i++)
{
for ( j = i + 1; j <= G->arcnum; j++)
{
if (EdgeTypes[i].weight > EdgeTypes[j].weight)
{
t = EdgeTypes[i].begin;
EdgeTypes[i].begin = EdgeT