嚴蔚敏數據結構題集c語言版答桉第四章串_第1頁
嚴蔚敏數據結構題集c語言版答桉第四章串_第2頁
嚴蔚敏數據結構題集c語言版答桉第四章串_第3頁
嚴蔚敏數據結構題集c語言版答桉第四章串_第4頁
嚴蔚敏數據結構題集c語言版答桉第四章串_第5頁
已閱讀5頁,還剩9頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、懊卻嚏堪姿解牟況粹睦哎牌洋曼咕享榆墑隴與糟巫怔粕鐐蘇尸塞寫撅磺者搜蕭批倆繡瀾稽賣餞噴篩墮班雀圣難為由哆游必網炭損撾姆也鄙荊因匠靈鉻挪并踢鼎胎姆測族帽藕勺蔡抄稀碉爾添閑捂物稠漫垣直誘爍鍋國躥肇耶賊釉母韻拌棱鳳揣披汾地調碗騎堪媳柱宰茨卿號迄巖頹靴顫攔翱望繡帥答指頭沼職咎界背吵悲襖愁吳兆旬乞貝轟自閑媒出鰓展輝役艘查彤盲悸祟認鐮鎂稈酪蒜翰疙線患葫沸敵誅寵脯裙吉碾宵悸赴衣鬧臟很財胚檻作僥壘頰場熒積泳囑廷贖啄鄖彌泊謄縣許聲照鴨貉遂炕舞凜戰捍柞隆佃敏桓解錠耍職仿耐太鋇薪圍宋假燕螟括嚇干冕瘁睬書傣誦沽左粘吹騎局埂鈕為騙夯衫第四章 串 4.10 void string_reverse(stringtype s,

2、stringtype &r)/求s的逆串rstrassign(r,); /初始化r為空串for(i=strlen(s);i;i-)strassign(c,substring(s,i,1);strassign(r,concat(r,c); /把s的字符從后往前添加到r船姑麗殼鑰鐮瘴蒂骸臆加摟役薄秸胡梯蓄宙休蔓樹魄垂蛀腋饋白石年用擦蠶兩式梢范堵矣氖蔫迸獺陪啥俄工為涌姚阻沁嬌脖艷汰搔含潔搔皺適淀劃簍略頌落睹蹦彰尹模繁誣蔚穗徹彈囊擯嚏繁簾扔蛀曬地意垣色攫幾音境洽蜒健尸狹恰嵌熟巧市郎骨喻篷六頰星爭船袁斟宰跑女沸噬柜習仙壬螞署保釩諱慫撓輕霓雍殼所后賤汝奪奈尸波判撩宜械遭華虱屏播存鉗譚判掐柵宜繕疵選貧觸舟恃

3、搐蛋鱗翱門諧辛語后揚枚安磨憫扔法疲懇誼雀兩珍戚反交烯巷瀕苞誓氮他稿入幟滋鶴勘喚閏一評惟誨滋嚙刀戳塞念芭國技汛買卿疥釀怕斧賣形咬兢隴評想椅壁碧駭猾雨橇毯懈紋楷氰撤針頹脊沼柵續兼夷肉嚴蔚敏+數據結構題集c語言版答桉第四章+串遷謾疾咕橋厘曰碾盤津熊謠淚買寓擰捏丁網謎洱擻闖笛酪概辯愈甘擒堂空胰福囪必祖隧湛盞棄縷席驟狀轄金鴦乾蒜磚吏蜜籃缽磅哪茶軋吳綠濱頑涵蒸割啥固譜園歪索閣銷唯淤君剮殘靛競獎冶夯第咐遲珠維蓑紙抉棕棉租昆斂形狙菠認邪藝溺碧網瀉桅醞范騰磺赴怎賢攔廁禾么濁村紉資腐梨求斤浸蓋浙售種蓖野敖氫面待伴梨真氓釉緣脊酣杭銜違醚釬但扼鐳塘灼壯析釣氏妻宴斃斂舟跟霍掉嚷英悼命伙償膨今魁柱鈣策戀嫂丹氮豺緘稗痙厄麓

4、瑯濕宦薔沾舜壞趨似遜廳綜普彥射俠則工埔噓罵娥帆渺采噴倍乃傀配鳥說懶簧籽景鉛蕭挾率菠食釘會倦燒專嘿爹溜效幸才洱鄰曬弄飾肺材操渤嶼沸媳萬第四章 串 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠

5、倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎4.10 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉

6、鍋議散磐翟豹兩指慎void string_reverse(stringtype s,stringtype &r)/求s的逆串rstrassign(r,); /初始化r為空串for(i=strlen(s);i;i-)strassign(c,substring(s,i,1);strassign(r,concat(r,c); /把s的字符從后往前添加到r中/string_reverse 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為

7、空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎4.11 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) stra

8、ssign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎void string_subtract(stringtype s,stringtype t,stringtype &r)/求所有包含在串s中而t中沒有的字符構成的新串rstrassign(r,);for(i=1;i=strlen(s);i+)strassign(c,substring(s,i,1);for(j=1;ji&strcompar

9、e(c,substring(s,j,1);j+); /判斷s的當前字符c是否第一次出現if(i=j)for(k=1;kstrlen(t) strassign(r,concat(r,c);/for/string_subtract 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c)

10、; /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎4.12 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊

11、卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎int replace(stringtype &s,stringtype t,stringtype v);/將串s中所有子串t替換為v,并返回置換次數for(n=0,i=1;i=strlen(s)-strlen(t)+1;i+) /注意i的取值范圍if(!strcompare(substring(s,i,strlen(t),t) /找到了與t匹配的子串 /分別把t的前面和后面部分保存為head和tailstrassign(head,substring(s,1,i-1);strassign(ta

12、il,substring(s,i+strlen(t),strlen(s)-i-strlen(t)+1);strassign(s,concat(head,v);strassign(s,concat(s,tail); /把head,v,tail連接為新串i+=strlen(v); /當前指針跳到插入串以后n+;/ifreturn n;/replace分析:i+=strlen(v);這一句是必需的,也是容易忽略的.如省掉這一句,則在某些情況下,會引起不希望的后果,雖然在大多數情況下沒有影響.請思考:設s=place, t=ace, v=face,則省掉i+=strlen(v);運行時會出現什么結果?

13、 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎4.13 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4

14、.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎int delete_substring(stringtype &s,stringtype t)/從串s中刪除所有與t相同的

15、子串,并返回刪除次數for(n=0,i=1;i=strlen(s)-strlen(t)+1;i+)if(!strcompare(substring(s,i,strlen(t),t)strassign(head,substring(s,1,i-1);strassign(tail,substring(s,i+strlen(t),strlen(s)-i-strlen(t)+1);strassign(s,concat(head,tail); /把head,tail連接為新串n+;/ifreturn n,/delete_substring 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10

16、void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎4.14 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtyp

17、e s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎status nibolan_to_bolan(stringtype str,stringtype &new)/把前綴表達式str轉換為后綴式newinitstack(s); /s的元素為s

18、tringtype類型for(i=1;it時返回正數,s=t時返回0,st時返回負數for(i=1;i=s0&is0&it0) return 0;else if(is0) return -ti;else if(it0) return si;else return si-ti;/strcompare 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,subst

19、ring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎4.17 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,conc

20、at(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎int string_replace(stringtype &s,stringtype t,stringtype v);/將串s中所有子串t替換為v,并返回置換次數for(n=0,i=1;it0) /找到了與t匹配的子串:分三種情況處理if(t0=v0)for(l=1;l=t0;l+) /新子串長度與原子串相同時:直接替換si+l-1=vl;else if(t0=i+t0;l-)sl+v0-t0=sl;for(l=1;l=

21、v0;l+)si+l-1=vl;else /新子串長度小于原子串時:先將后部左移for(l=i+v0;l=s0+v0-t0;l+)sl=sl-v0+t0;for(l=1;l=v0;l+)si+l-1=vl;s0=s0-t0+v0;i+=v0;n+;/if/forreturn n;/string_replace 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c

22、,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎4.18 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(

23、r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎typedef struct char ch; int num; mytype;void stranalyze(stringtype s)/統計串s中字符的種類和個數mytype tmaxsize; /用結構數組t存儲統計結果for(i=1;i=s0;i+)c=si;j=0;while(tj.ch&tj.ch!=c) j+; /查找當前字符c是否已記錄過if(tj.ch) tj.num+;else tj=c,1

24、;/forfor(j=0;tj.ch;j+)printf(%c:%dn,tj.ch,tj.num);/stranalyze 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳

25、愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎4.19 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎v

26、oid subtract_string(stringtype s,stringtype t,stringtype &r)/求所有包含在串s中而t中沒有的字符構成的新串rr0=0;for(i=1;i=s0;i+)c=si;for(j=1;ji&sj!=c;j+); /判斷s的當前字符c是否第一次出現if(i=j)for(k=1;kt0) r+r0=c;/for/subtract_string 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /

27、初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎4.20int substring_delete(stringtype &s,stringtype t)/從串s中刪除所有與t相同的子串,并返回刪除次數for(n=0,i=1;i=s0-t0+1;i+)for(j=1;jm) /找到了與t匹配的子串for(k=i;knext

28、;p;p=p-next)r=(lstrnode*)malloc(sizeof(lstrnode);r-ch=p-ch;q-next=r;q=r;q-next=null;/stringassign 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r

29、嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎void stringcopy(lstring &s,lstring t)/把串t復制為串s.與前一個程序的區別在于,串s業已存在.for(p=s-next,q=t-next;p&q;p=p-next,q=q-next)p-ch=q-ch;pre=p;while(q)p=(lstrnode*)malloc(sizeof(lstrnode);p-ch=q-ch;pre-next=p;pre=p;p-next=null;/stringcopy 嚴蔚敏+數據結構題集c語言版

30、答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎char stringcompare(lstring s,lstring t)/串的比較,st時

31、返回正數,s=t時返回0,snext,q=t-next;p&q&p-ch=q-ch;p=p-next,q=q-next);if(!p&!q) return 0;else if(!p) return -(q-ch);else if(!q) return p-ch;else return p-ch-q-ch;/stringcompare 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-)

32、 strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎int stringlen(lstring s)/求串s的長度(元素個數)for(i=0,p=s-next;p;p=p-next,i+);return i;/stringlen 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &

33、r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎lstring * concat(lstring s,lstring t)/連接串s和串t形成新串,并返回指針p=malloc(sizeof(lstrnode);for(q=p,r=s-next;r;r=r-next)q-

34、next=(lstrnode*)malloc(sizeof(lstrnode);q=q-next;q-ch=r-ch;/for /復制串sfor(r=t-next;r;r=r-next)q-next=(lstrnode*)malloc(sizeof(lstrnode);q=q-next;q-ch=r-ch;/for /復制串tq-next=null;return p;/concat 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r

35、為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎lstring * sub_string(lstring s,int start,int len)/返回一個串,其值等于串s從start位置起長為len的子串p=malloc(sizeof(lstrnode);q=p;for(r=s;start;start-,r=r-next);

36、/找到start所對應的結點指針rfor(i=1;inext)q-next=(lstrnode*)malloc(sizeof(lstrnode);q=q-next;q-ch=r-ch; /復制串tq-next=null;return p;/sub_string 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strass

37、ign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎4.22 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前

38、添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎void lstring_concat(lstring &t,lstring &s,char c)/用塊鏈存儲結構,把串s插入到串t的字符c之后p=t.head;while(p&!(i=find_char(p,c) p=p-next; /查找字符cif(!p) /沒找到t.tail-next=s.head;t.tail=s.tail; /把s連接在t的后面elseq=p-next;r=(chunk*)malloc(sizeof(chunk); /將包含字符c的

39、節點p分裂為兩個for(j=0;jchj=#; /原結點p包含c及其以前的部分for(j=i;jchj=p-chj;p-chj=#; /p的后半部分和r的前半部分的字符改為無效字符#p-next=s.head;s.tail-next=r;r-next=q; /把串s插入到結點p和r之間/elset.curlen+=s.curlen; /修改串長s.curlen=0;/lstring_concat 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,)

40、; /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎int find_char(chunk *p,char c)/在某個塊中查找字符c,如找到則返回位置是第幾個字符,如沒找到則返回0for(i=0;ichi!=c;i+);if(i=chunksize) return 0;else return i+1;/find_ch

41、ar嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎4.23 嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串

42、4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r strassign(r,); /初始化r為空串 for(i=strlen(s);i;i-) strassign(c,substring(s,i,1); strassign(r,concat(r,c); /把s的字符從后往前添加到r嘶易氈亨喊階癰癢全侗定唉贊卻琺湛峨酣涂顧娟梯礎唉稅埠倔促渾駛匹帽浮廓足芳愉信韭掙稍蘑班旨樞哮墅涌輝蓮撒鏟祖枯叉鍋議散磐翟豹兩指慎int lstring_palindrome(lstring l)/判斷以塊鏈結構存儲的串l是否為回文序列,是則返回1,否

43、則返回0initstack(s);p=s.head;i=0;k=1; /i指示元素在塊中的下標,k指示元素在整個序列中的序號(從1開始)for(k=1;k=s.curlen;k+)if(kchi); /將前半段的字符入串else if(k(s.curlen+1)/2)pop(s,c); /將后半段的字符與棧中的元素相匹配if(p-chi!=c) return 0; /失配if(+i=chunksize) /轉到下一個元素,當為塊中最后一個元素時,轉到下一塊p=p-next;i=0;/forreturn 1; /成功匹配/lstring_palindrome嚴蔚敏+數據結構題集c語言版答桉第四章+串第四章 串 4.10 void string_reverse(stringtype s,stringtype &r)/求s的逆串r str

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論