C语言完成以下代码:题目描述 next[j]表示当模式串中第j个字符与主串中相应字符不匹配时,在模式串中需要重新和主串中该字符进行比较的字符的位置。求模式串的next值,用next数组存放,全部输出。 输入 输入一个字符串 输出 输出所有next值
时间: 2024-02-17 17:04:06 浏览: 119
以下是C语言实现:
```c
#include <stdio.h>
#include <string.h>
void get_next(char *pattern, int *next) {
int i = 0, j = -1;
int len = strlen(pattern);
next[0] = -1;
while (i < len) {
if (j == -1 || pattern[i] == pattern[j]) {
i++;
j++;
next[i] = j;
} else {
j = next[j];
}
}
}
int main() {
char pattern[100];
int next[100];
printf("请输入模式串:");
scanf("%s", pattern);
get_next(pattern, next);
printf("next数组为:\n");
for (int i = 0; i < strlen(pattern); i++) {
printf("%d ", next[i]);
}
printf("\n");
return 0;
}
```
输入一个字符串作为模式串,然后调用`get_next`函数生成`next`数组,最后输出`next`数组即可。
阅读全文