# Include <stdio. h> # include <stdlib. h> # include <string. h> typedef struct {char * Ch; int length;} hstring; void strassign (hstring & T, char chars []); int get_next (hstring T, int next []); void main () {hstring t; char chars [80]; int I, n, next [80]; printf ("Please input the string:"); gets (chars ); strassign (T, chars); n = get_next (T, next); for (I = 1; I <= N; I ++) printf ("% d ", next [I]); printf ("\ n");} void strassign (hstring & T, char chars [ ]) {Char C [80]; int I, j, k; For (k = 0; * chars; k ++, Chars ++) c [k] = * chars; for (I = 0; I <K; I ++); If (! I) {T. Ch = NULL; T. Length = 0;} else {If (! (T. Ch = (char *) malloc (I * sizeof (char) {printf ("error! \ N "); return;} For (j = 1; j <= I; j ++) T. ch [J] = C [J-1]; T. length = I ;}} int get_next (hstring T, int next []) {int I = 1, j = 0, Count = 1; next [1] = 0; while (I <t. length) {If (j = 0 | T. ch [I] = T. ch [J]) {I ++; j ++; next [I] = J; count ++;} elsej = next [J];} return count ;}