📄 习题1-串的模式匹配.c
字号:
#include "datastru.h"
#include <stdio.h>
int index(SEQSTRING s,SEQSTRING t)
{/*模式匹配*/
int i = 1, j = 1;
while(i <= s.len && j <= t.len)
if(s.ch[i] == t.ch[j]) {i++; j++;}
else {i = i - j + 2; j = 1;}
if(j > t.len) return i - t.len;
else return 0;
}
main() {
SEQSTRING s, t;
int i;
char ch;
printf("\n请输入主串,回车键结束 :");
ch = getchar(); i = 1;
while(ch != '\n')
{s.ch[i] = ch; i++; /*主串从s.ch的下标1开始放起*/
ch = getchar();}
s.len = i - 1; /*主串长度放在s.len中*/
printf("\n请输入子串,回车键结束 :");
ch = getchar(); i = 1;
while(ch != '\n')
{t.ch[i] = ch; i++; /*主串从t.ch的下标1开始放起*/
ch = getchar();}
t.len = i - 1; /*子串长度放在t.len中*/
i = index(s,t); /*匹配操作算法*/
if(i == 0) printf("\n子串不在主串中!\n\n");
else printf("\n子串在主串中! 从位置%d开始.\n\n",i);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -