一.简述
【暂无】
二.头文件
1 //4_2_part1.h 2 /** 3 author:zhaoyu 4 */ 5 //2016-6-10 6 //----串的定长顺序存储表示---- 7 #include "head.h" 8 #define MAXSTRLEN 255//用户可以在255以内定义最大串长 9 //这语法还不是很熟悉 10 typedef unsigned char SString[MAXSTRLEN+1];//0 号单元存放串的长度 11 int StrLength(SString T) 12 { 13 for (int i = 1; i <= MAXSTRLEN; ++i) 14 { 15 if ('\0' == T[i]) 16 { 17 return i-1; 18 } 19 } 20 return MAXSTRLEN; 21 } 22 23 /** 24 algorithm 4.2 25 */ 26 Status Concat(SString &T, SString S1, SString S2) 27 { 28 //用 T 返回由 S1 和 S2 连接而成的新串。 29 //若未截断,则返回 TRUE,否则返回 FALSE 30 Status uncut; 31 if (S1[0] + S2[0] < MAXSTRLEN) 32 {//未截断 33 int i = 1; 34 for (i = 1; i <= S1[0]; ++i) 35 { 36 T[i] = S1[i]; 37 } 38 for (i = 1; i <= S2[0]; ++i) 39 { 40 T[S1[0]+i] = S2[i]; 41 } 42 T[0] = S1[0] + S2[0]; 43 uncut = TRUE; 44 } 45 else if (S1[0] < MAXSTRLEN) 46 { 47 int i = 1; 48 for (i = 1; i <= S1[0]; i++) 49 { 50 T[i] = S1[i]; 51 } 52 for (i = S1[0]+1; i <= MAXSTRLEN; i++) 53 { 54 T[i] = S2[i-S1[0]]; 55 } 56 T[0] = MAXSTRLEN; 57 uncut = FALSE; 58 } 59 else 60 { 61 for (int i = 1; i <= MAXSTRLEN; i++) 62 { 63 T[i] = S1[i]; 64 } 65 T[0] = S1[0] = MAXSTRLEN; 66 uncut = FALSE; 67 } 68 return uncut; 69 } 70 /** 71 algorithm 4.3 72 */ 73 Status SubString(SString &Sub, SString S, int pos, int len) 74 { 75 //用 Sub 返回串 S 的第 pos 个字符起长度为 len 的字串 76 //其中, 1<= pos <<= SreLength(S) 且 0 <= len <= StrLength(S)-pos+1 77 if (pos < 1 || pos > S[0] || len < 0 || len > S[0]-pos+1) 78 { 79 return ERROR; 80 } 81 for (int i = 1; i <= len; i++) 82 { 83 Sub[i] = S[i+pos-1]; 84 } 85 Sub[0] = len; 86 return OK; 87 } 88 void PrintSString(SString T) 89 { 90 //if(T[]) 91 for (int i = 1; i <= T[0]; ++i) 92 { 93 printf("%c", *(T+i)); 94 } 95 printf("\n"); 96 } 97 98 4_2_part1.h