【正文】
。 return(1)。 } 423 中國科大《數(shù)據(jù)結構》 串的基本運算的實現(xiàn) 5.串定位 (采用鏈串存儲 ) LString *lindex(LString s,LString t) //求串 t在串 s中的位置,返回指向 t串起始位置的指針 { LString *loc,*p,*q。 loc=s。 p=loc。q=t。 while(p q) //當 t、 s串均未結束時 { if(pdata==qdata) //字符匹配時,指針后移 { p=pnext。 q=qnext。 } else //字符不匹配時,回溯 { loc=locnext。 p=loc。 q=t。 } } if(q==NULL) return(loc)。 //匹配完成,返回 else return(NULL)。 } 424 中國科大《數(shù)據(jù)結構》 習 題 4 1. 簡述下列每對術語的區(qū)別:空串和空白串,串常量和串變量,主串和子串,靜態(tài)分配的順序串和動態(tài)分配的順序串。 2. 設 s=I am a student, t=good, q=programer。給出下列操作的結果: (1) StrLength(s) (2) SubString(sub1,s,1,7) (3) StrIndex(s, 39。a39。,4) (4) StrReplace(s, 39。student39。,q) (5) Strcat(StrCat(sub1,t)) 3. 利用 C的庫函數(shù) strlen,strcpy和 strcat寫一算法 void StrInsert(char *S, char *T, int i),將串 T插入到串 S的第 i個位置上。若 i大于 S的長度,則插入不執(zhí)行。 425 中國科大《數(shù)據(jù)結構》 習 題 4 4. 利用 C的庫函數(shù) strlen 和 strcpy寫一算法 void StrDelete(char *S,int i, int m),刪去串 S中從位置 i開始的連續(xù) m個字符。若 i≥strlen(S),則沒有字符被刪除;若 i+m≥strlen(S),則將 S中從位置 i開始直至末尾的字符均刪去。 5. 以 HString為存儲表示,寫一個求子串的算法。 6. 一個文本串可用事先給定的字母映射表進行加密。例如,設字母映射表為: a b c d e f g h I j k l m n o p q r s t u v w x y z n g z q t c o b m u h e l k p d a w x f y I v r s j 則字符串 encrypt被加密為 tkzwsdf。試寫一算法將輸入的文本串進行加密后輸出;另寫一算法,將輸入的已加密的文本串進行解密后輸出。 426 中國科大《數(shù)據(jù)結構》 習 題 4 7. 寫一算法 void StrReplace(char *T, char *P, char *S),將 T中首次出現(xiàn)的子串 P替換為串 S。注意: S和 P的長度不一定相等。 8. 若 S和 T是用結點大小為 1的單鏈表存儲的兩個串,試設計一個算法找出 S中第一個不在 T中出現(xiàn)的字符。 427 中國科大《數(shù)據(jù)結構》 習題 ? 本章習題參見教師網頁: 428 中國科大《數(shù)據(jù)結構》 演講完畢,謝謝觀看!