KMP 順序串操作練習

2021-07-31 22:02:31 字數 2375 閱讀 4561

2023年10月14日 課下練習

/*

整型資料最好不要用 引用傳參

*/#include

#include

#define maxsize 100

typedef struct

sqstring;

//初始化串

void initstring(sqstring* &s)

//生成乙個與str串相等的s串

void strassign(sqstring* &s,char str)

s->data[i]='\0';

s->length=i;//不包括字串最後乙個空字元

}//將串t複製給串s

void strcopy(sqstring* &s,sqstring* &t)

s->data[i]='\0';

s->length=t->length;

}//判斷兩個串是否相等

bool strequal(sqstring* &s,sqstring* &t)

}return true;

}}//返回串中的字元數

int strlength(sqstring* &s)

//將串s和串t連線在一起

sqstring* concat(sqstring* &s,sqstring* &t)

for(i=s->length; ilength+t->length; i++,j++)

p->data[s->length+t->length]='\0';

p->length=s->length+t->length;

return p;

}//求子串:返回串s中從第i個字元開始的,由連續j個字元組成的子串

sqstring* substr(sqstring* &s,int i,int j)

q->length=j;

q->data[j]='\0';

returnq;}

//將串t插入到串s中第i個位置,並返回新的串

sqstring* insstr(sqstring* &s,int i,sqstring* &t)

for(j=0; jlength; j++)

for(j=i-1; jlength; j++)

q->length=s->length+t->length;

q->data[q->length]='\0';

returnq;}

//從串s中刪去第i個字元開始的長度為j的子串,並返回產生的新串

sqstring* delstr(sqstring* &s,int i,int j)

for(k=i+j-1; klength; k++)

q->length=s->length-j;

q->data[q->length]='\0';

returnq;}

//在串s中,將第i個字元開始的j個字元構成的子串用串t替換,並返回產生的新串

sqstring* repstr(sqstring* &s,int i,int j,sqstring* &t)

for(k=0; klength; k++)

for(k=i+j-1; klength; k++)

q->length=s->length-j+t->length;

q->data[q->length]='\0';

returnq;}

//輸出串

void printstr(sqstring* &s)

printf("\n");

printf("%d\n",s->length);

}void getnext(sqstring* &s,int

next)

else

k=next[k];

}}int kmpindex(sqstring* &s,sqstring* &t)

else

}if(j>=t->length)

return (i-t->length);

else

return -1;

}int main()

; char b[20]= ;

sqstring *p;

sqstring *q;

// sqstring *m,*n;

initstring(p);

initstring(q);

strassign(p,a);

strassign(q,b);

//m=insstr(p,5,q);

//n=delstr(m,5,4);

//printstr(n);

v=kmpindex(p,q);

printf("%d\n",v);

return

0;}

定長順序串的kmp演算法

include include using namespace std define maxstrlen 200 define true 1 define false 0 define ok 1 define error 0 define infeasible 1 define overflow 2...

練習 順序串的實現及應用

define maxlength 60 typedef struct seqstring void strassign seqstring s,char cstr 串的賦值操作 int strempty seqstring s 判斷串是否為空,串為空返回1,否則返回0 int strlength s...

順序容器 字串操作

include include include using namespace std void replace string string s,const string oldval,const string newval if iter2 oldval.end while iter2 newva...