Enndme· 2023-06-15 11:39 采纳率: 70%
浏览 22

关于c++的定义问题

为什么说next没有定义啊

#include<iostream>
using namespace std;
#include<string.h>
#define MAXLEN 255
typedef struct
{
    char ch[MAXLEN+1];
    int length; 
 } SString;
 
 void StrAssign(SString &S,char s[])
 {
     S.length=strlen(s);
     for(int i=1;i<=S.length;i++)
     S.ch[i]=s[i-1];
 }
 int Index_BF(SString S, SString T,int pos)
 {
     int i,j;
     i=pos; j=1;
     while(i<=S.length && j<=T.length)
     {
         if(S.ch[i]==T.ch[j])
         {
             ++i;
             ++j;
             
         }
        else
        {
            i=i-j+2;
            j=1;
        }
    }
        if(j>T.length)
        return i-T.length;
        else
        return 0;
 }
 void StrPrint(SString S)
 {
     int i;
     for(i=1;i<=S.length;i++)
     cout<<S.ch[i];
     cout<<endl;
 }
 void get_next(SString T,int next[])
 {
     int i,j;
     i=1;
     next[1]=0;
     j=0;
     while(i<T.length)
     {
         if(j==0||T.ch[i]==T.ch[j])
         {
             i++;
             j++;
             next[i]=j;
         }
        else
        j=next[j];
     }
 }
 void StrDelete(SString &S,SString T,int pos)
 {
     int i,j,k;
     get_next(T,next);
     for(i=pos;i<=S.length-T.length+1;i++)
     {
         k=Index_BF(S,T,i);
         if(k)
         {
             for(j=k;j<=S.length-T.length;j++)
             S.ch[j]=S.ch[j+T.length];
             S.length=S.length-T.length ;
         }
     }
 }
 
 int main(){
     SString S,T;
     int k;
     char string1[MAXLEN],string2[MAXLEN];
     cout<<"输入主序列:";
     gets(string1);
     cout<<"输入子序列:";
    gets(string2);
    StrAssign(S,string1);
    StrAssign(T,string2);
    cout<<"输入起始位置:";
    cin>>k;
    StrDelete(S,T,k);
    cout<<"删除后的主串为:";
    StrPrint(S);
    return 0; 
 }


  • 写回答

4条回答 默认 最新

  • 谛凌 2023-06-15 11:47
    关注

    68行 get_next(T,next);
    是T.next,不是T,next,你把点写成了逗号

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月15日