一.简述

  【暂无】

  二.头文件

 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
4_2_part1.h

相关文章: