### 思路
1. **录入字符串**:读取用户输入的字符串个数 `n`,然后逐个读取每个字符串。
2. **计算NEXT值**:对于每个字符串,计算其NEXT数组。
3. **输出NEXT值**:输出每个字符串对应的NEXT数组。
### 伪代码
```
function get_next(T, next):
initialize next[1] to 0
initialize j to 1
for i from 2 to length of T:
while j > 0 and T[j] != T[i]:
j = next[j]
if T[j] == T[i]:
j = j + 1
next[i] = j
function main():
read n
for i from 1 to n:
read string S
get_next(S, next)
print next array
```
### C++代码
#include "stdio.h"
#include "stdlib.h"
#include "iostream"
#define MAXSTRLEN 255 // 用户可在255以内定义最大串长
typedef unsigned char SString[MAXSTRLEN + 1]; // 0号单元存放串的长度void get_next(SString T, int next[]) {int i = 1, j = 0;next[1] = 0;while (i < T[0]) {if (j == 0 || T[i] == T[j]) {++i;++j;next[i] = j;} else {j = next[j];}}
}int main() {int next[MAXSTRLEN];SString S;int n, i, j;char ch;scanf("%d", &n); // 指定要验证NEXT值的字符串个数ch = getchar();for (i = 1; i <= n; i++) {ch = getchar();for (j = 1; j <= MAXSTRLEN && (ch != '\n'); j++) { // 录入字符串S[j] = ch;ch = getchar();}S[0] = j - 1; // S[0]用于存储字符串中字符个数get_next(S, next);printf("NEXT J is:");for (j = 1; j <= S[0]; j++)printf("%d", next[j]);printf("\n");}
}