串的定長順序儲存表示

2022-02-08 03:35:29 字數 3068 閱讀 4905

/*

c4-1.h 串的定長順序儲存表示

*/#define maxstrlen 40 /* 使用者可在255以內定義最大串長(1個位元組) */typedef

char sstring[maxstrlen+1]; /*

0號單元存放串的長度

*/

/*

bo4-1.c 串採用定長順序儲存結構(由c4-1.h定義)的基本操作(14個)

*//*

sstring是陣列,故不需引用型別。此基本操作包括演算法4.2,4.3,4.5

*/status strassign(sstring t,

char *chars) }

status strcopy(sstring t,sstring s)

status strempty(sstring s)

intstrcompare(sstring s,sstring t)

intstrlength(sstring s)

status clearstring(sstring s)

status concat(sstring t,sstring s1,sstring s2)

/*演算法4.2改

*/

else

} status substring(sstring sub,sstring s,

int pos,int

len)

int index(sstring s,sstring t,int

pos)

else

/*指標後退重新開始匹配

*/

if(j>t[0

])

return i-t[0

];

else

return0;

}else

return0;

} status strinsert(sstring s,

intpos,sstring t)

else

} status strdelete(sstring s,

int pos,int

len)

status replace(sstring s,sstring t,sstring v)

}while

(i);

return

ok; }

void

destroystring()

void

strprint(sstring t)

/*

main4-1.c 檢驗bo4-1.c的主程式

*/#include

"c1.h

"#include

"c4-1.h

"#include

"bo4-1.c

"void

main()

printf(

"串長為%d 串空否?%d(1:是 0:否)\n

",strlength(s1),strempty(s1));

strcopy(s2,s1);

printf(

"拷貝s1生成的串為: ");

strprint(s2);

printf(

"請輸入串s2: ");

gets(c);

k=strassign(s2,c);

if(!k)

i=strcompare(s1,s2);

if(i<0

) s='

<';

else

if(i==0

) s='='

;

else

s='>';

printf(

"串s1%c串s2\n

",s);

k=concat(t,s1,s2);

printf(

"串s1聯接串s2得到的串t為: ");

strprint(t);

if(k==false)

printf(

"串t有截斷\n");

clearstring(s1);

printf(

"清為空串後,串s1為: ");

strprint(s1);

printf(

"串長為%d 串空否?%d(1:是 0:否)\n

",strlength(s1),strempty(s1));

printf(

"求串t的子串,請輸入子串的起始位置,子串長度: ");

scanf(

"%d,%d

",&i,&j);

k=substring(s2,t,i,j);

if(k)

printf(

"從串t的第pos個字元起,刪除len個字元,請輸入pos,len: ");

scanf(

"%d,%d

",&i,&j);

strdelete(t,i,j);

printf(

"刪除後的串t為: ");

strprint(t);

i=strlength(s2)/2

; strinsert(s2,i,t);

printf(

"在串s2的第%d個字元之前插入串t後,串s2為:\n

",i);

strprint(s2);

i=index(s2,t,1

); printf(

"s2的第%d個字母起和t第一次匹配\n

",i);

substring(t,s2,

1,1);

printf(

"串t為:");

strprint(t);

concat(s1,t,t);

printf(

"串s1為:");

strprint(s1);

replace(s2,t,s1);

printf(

"用串s1取代串s2中和串t相同的不重疊的串後,串s2為: ");

strprint(s2);

}

串的定長順序儲存表示

串的定長順序儲存表示 define maxstrlen 40 使用者可在255以內定義最大串長 1個位元組 typedef char sstring maxstrlen 1 0號單元存放串的長度 串採用定長順序儲存結構的基本操作 14個 sstring是陣列,故不需引用型別。此基本操作包括演算法4....

串的定長順序儲存表示

串的定長順序儲存表示是一種類似於線性表的順序儲存結構,用一組位址連續的儲存單元儲存串值的字串行。在實現時主要實現以下功能 int length sstring s 串長 bool stringconcat sstring t,sstring s1,sstring s2 用t返回s1和s2連線的串 v...

C語音 串的定長順序儲存表示

參考嚴蔚敏 吳偉民版 資料結構 c語言版 類似線性表的順序儲存結構,用一組位址連續的儲存單元儲存串值的字串行。串的定長順序儲存表示 define maxstrlen 255 使用者定義的最大串長 typedef unsigned char sstring maxstrlen 1 0號位置存放串的長度...