数据结构课程设计,以顺序存储结构表示串,求两个字符串中的最长公共子串。帮忙看下,我运行不出来

   更新日期:2024.06.01

百度提交了好几次 怎么就提交不上呢 

我改了下你的代码,你写的太冗余了,其实你第一个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); 

}



  • 13111343857 :数据结构(c语言版)采用顺序存储结构,完成串的联接和子串定位操作_百度...
    符颜是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+...
  • 13111343857 :数据结构课程设计,以顺序存储结构表示串,求两个字符串中的最长公共子...
    符颜是4482 :答:我改了下你的代码,你写的太冗余了,其实你第一个for循环的时候 记录下本次循环匹配的第一个项和最大匹配长度,如果本次的长度大于以前的长度,则更新,运行如下图:代码如下:include <stdio.h>#include<stdlib.h> include <string.h> define MaxStrSize 256 typedef struct { char ch [MaxStr...
  • 13111343857 :用C语言数据结构【线性表的顺序存储结构】知识解决如下问题,请高手指 ...
    符颜是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。
  • 13111343857 :存储结构的数据结构方面的储存结构
    符颜是4482 :答:顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。链接存储方法它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链式存储结构,链式存储结构通常借助于程序设计语言中的指针类型来实现。 顺序存储和链接存储是...
  • 13111343857 :线性表的顺序存储结构是以什么来表示数据元素之间的逻辑关系的_百度知 ...
    符颜是4482 :答:顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素,称为线性表的顺序存储结构或顺序映像(sequential mapping)。它以“物理位置相邻”来表示线性表中数据元素间的逻辑关系,可随机存取表中任一元素。由此得到的存储结构为顺序存储结构,通常顺序存储结构是借助于计算机程序设计语言(例如c/c++...
  • 13111343857 :采用顺序存储的数据结构最方便。将学号、姓名、什么?
    符颜是4482 :答:采用顺序存储的数据结构最方便。将学号、姓名、平均成绩看成-一个记录 (元素,含三个数据项),将100个这样的记录存于数组中。因一般无增删操作,故宜采用顺序存储。typedef struct { int num;//学号 char name[8];//姓名 float score;//平均成绩 } node;node student [100]....
  • 13111343857 :数据结构的存储方式有哪几种
    符颜是4482 :答:1、顺序存储方式:顺序存储方式就是在一块连续的存储区域一个接着一个的存放数据,把逻辑上相连的结点存储在物理位置上相邻的存储单元里,结点间的逻辑关系由存储单元的邻接挂安息来体现。顺序存储方式也称为顺序存储结构,一般采用数组或者结构数组来描述。2、链接存储方法:它比较灵活,其不要求逻辑上相邻...
  • 13111343857 :数据结构中二叉树的顺序存储结构代码怎么编写?
    符颜是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 ...
  • 13111343857 :数据结构实验,线性表的顺序存储结构的实现编写完成下列功能的函数:(1...
    符颜是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,
  • 13111343857 :严蔚敏版数据结构中线性表的动态分配顺序存储结构的问题
    符颜是4482 :答:而一次追加的内存大小就是10个ElemType类型 C、初始化分配了内存,表明这些内存可以被本程序使用,但本程序究竟使用了所分配的多大的内存,这就是length的作用,共使用了length个ElemType类型 二、L.listsize为int类型,LIST_INIT_SIZE是个整型数据,当然可以赋值 三、L.elem=(ElemType*)malloc(LIST_INIT_...
  • 相关链接

    欢迎反馈与建议,请联系电邮
    2024 © 视觉网