数据结构课程设计,以顺序存储结构表示串,求两个字符串中的最长公共子串。帮忙看下,我运行不出来
百度提交了好几次 怎么就提交不上呢
我改了下你的代码,你写的太冗余了,其实你第一个for循环的时候 记录下本次循环匹配的第一个项和最大匹配长度,如果本次的长度大于以前的长度,则更新,运行如下图:
代码如下:
#include <stdio.h>
#include<stdlib.h>
#include <string.h>
#define MaxStrSize 256
typedef struct {
char ch [MaxStrSize];
int length;
}SeqString;
void search(SeqString T,SeqString P )
{
int i,j,k,a;
int b=1;
int m =P.length;
int n = T.length;
int index = 0;//第一个匹配项
int maxlen = 0;//最大的匹配长度
int flag = 0;//未找到
for (i=0;i<=n;i++)
{
k=i;
for (j=0;j<=m;j++)
{
a = 0;
flag = 0;
while(j<m&&T.ch[k]==P.ch[j])
{
k++;j++;a++;
flag = 1;
}
if(flag ==1)
{
if(a>maxlen)
{
maxlen = a;
index = j-a;//匹配的首项
}
}
}
}
printf("匹配最大长度为:%d,匹配结果为:",maxlen);
for(;maxlen>0;maxlen--)
{
printf("%c",P.ch[index++]);
}
printf("
");
}
void main ()
{
SeqString T1,P1;
printf("输入第一个字符串 :");
gets(T1.ch);
printf("输入第二个字符串 :");
gets (P1.ch);
T1.length=strlen (T1.ch);
P1.length=strlen (P1.ch);
printf("第一个串为:%s,长度:%d
",T1.ch,T1.length);
printf("第二个串为:%s,长度:%d
",P1.ch,P1.length);
search(T1,P1);
}符颜是4482 :答:void main(){ char s1[100]={'a','b','a','b','b','a','a','b','a','a','\0'};char s2[100]={'a','a','b','\0'};int i=0,j=0;while(s1[i]!='\0'){ i++;} printf("定位结果为%d(0为第一个)\n",i);while(s2[j]!='\0'){ s1[i]=s2[j];i+...
符颜是4482 :答:我改了下你的代码,你写的太冗余了,其实你第一个for循环的时候 记录下本次循环匹配的第一个项和最大匹配长度,如果本次的长度大于以前的长度,则更新,运行如下图:代码如下:include <stdio.h>#include<stdlib.h> include <string.h> define MaxStrSize 256 typedef struct { char ch [MaxStr...
符颜是4482 :答:我们知道第一个人(编号一定是m%n-1) 出列之后,剩下的n-1个人组 成了一个新的约瑟夫环(以编号为k=m%n的人开始):k k+1 k+2 ... n-2, n-1, 0, 1, 2, ... k-2 并且从k开始报0。
符颜是4482 :答:顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。链接存储方法它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链式存储结构,链式存储结构通常借助于程序设计语言中的指针类型来实现。 顺序存储和链接存储是...
符颜是4482 :答:顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,称为线性表的顺序存储结构或顺序映像(sequential mapping)。它以“物理位置相邻”来表示线性表中数据元素间的逻辑关系,可随机存取表中任一元素。由此得到的存储结构为顺序存储结构,通常顺序存储结构是借助于计算机程序设计语言(例如c/c++...
符颜是4482 :答:采用顺序存储的数据结构最方便。将学号、姓名、平均成绩看成-一个记录 (元素,含三个数据项),将100个这样的记录存于数组中。因一般无增删操作,故宜采用顺序存储。typedef struct { int num;//学号 char name[8];//姓名 float score;//平均成绩 } node;node student [100]....
符颜是4482 :答:1、顺序存储方式:顺序存储方式就是在一块连续的存储区域一个接着一个的存放数据,把逻辑上相连的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接挂安息来体现。顺序存储方式也称为顺序存储结构,一般采用数组或者结构数组来描述。2、链接存储方法:它比较灵活,其不要求逻辑上相邻...
符颜是4482 :答:数据结构C语言版 二叉树的顺序存储表示和实现 P126 编译环境:Dev-C++ 4.9.9.2 日期:2011年2月13日 */#include <stdio.h>typedef char TElemType;// 二叉树的顺序存储表示 #define MAX_TREE_SIZE 100 // 二叉树的最大结点数 typedef TElemType SqBiTree[MAX_TREE_SIZE]; // 0号单元存储根结点 typedef ...
符颜是4482 :答:*sizeof(int)); if(!L.elem) exit(1); L.length=0; L.listsize=LIST_INIT_SIZE ; return 1;}void Create_Sq(SqList &L,int i){ for(int j=0,j100) j--; }}bool ListInsert_Sq(SqList &L, int i,
符颜是4482 :答:而一次追加的内存大小就是10个ElemType类型 C、初始化分配了内存,表明这些内存可以被本程序使用,但本程序究竟使用了所分配的多大的内存,这就是length的作用,共使用了length个ElemType类型 二、L.listsize为int类型,LIST_INIT_SIZE是个整型数据,当然可以赋值 三、L.elem=(ElemType*)malloc(LIST_INIT_...