![數(shù)據(jù)結(jié)構(gòu)經(jīng)典例題_第1頁(yè)](http://file4.renrendoc.com/view/9cebda515b8d09e7d7e9cedb5cffbf71/9cebda515b8d09e7d7e9cedb5cffbf711.gif)
![數(shù)據(jù)結(jié)構(gòu)經(jīng)典例題_第2頁(yè)](http://file4.renrendoc.com/view/9cebda515b8d09e7d7e9cedb5cffbf71/9cebda515b8d09e7d7e9cedb5cffbf712.gif)
![數(shù)據(jù)結(jié)構(gòu)經(jīng)典例題_第3頁(yè)](http://file4.renrendoc.com/view/9cebda515b8d09e7d7e9cedb5cffbf71/9cebda515b8d09e7d7e9cedb5cffbf713.gif)
![數(shù)據(jù)結(jié)構(gòu)經(jīng)典例題_第4頁(yè)](http://file4.renrendoc.com/view/9cebda515b8d09e7d7e9cedb5cffbf71/9cebda515b8d09e7d7e9cedb5cffbf714.gif)
![數(shù)據(jù)結(jié)構(gòu)經(jīng)典例題_第5頁(yè)](http://file4.renrendoc.com/view/9cebda515b8d09e7d7e9cedb5cffbf71/9cebda515b8d09e7d7e9cedb5cffbf715.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)結(jié)構(gòu)經(jīng)典例題1設(shè)計(jì)一個(gè)算法將L拆分成兩個(gè)帶頭節(jié)點(diǎn)的單鏈表L1和L2。voidsplit(LinkList*&L,LinkList*&L1,LinkList*&L2)LinkList*p=L-next,*q,*r1;/p指向第1個(gè)數(shù)據(jù)節(jié)點(diǎn)L1=L;/L1利用原來(lái)L的頭節(jié)點(diǎn)r1=L1;/r1始終指向L1的尾節(jié)點(diǎn)L2=(LinkList*)malloc(sizeof(LinkList);/創(chuàng)建L2的頭節(jié)點(diǎn)L2-next=NULL;置L2的指針域?yàn)镹ULLwhile(p!=NULL)r1-next=p;采用尾插法將*p(data值為ai)插入L1中r1=p;p=p-next;/p移向下一個(gè)節(jié)點(diǎn)(d
2、ata值為bi)q=p-next;/由于頭插法修改p的next域,故用q保存*p的后繼節(jié)點(diǎn)p-next=L2-next;采用頭插法將*卩插入L2中L2-next=p;p=q;/p重新指向ai+1的節(jié)點(diǎn)r1-next=NULL;/尾節(jié)點(diǎn)next置空查找鏈表中倒數(shù)第k個(gè)位置上的節(jié)點(diǎn)(k為正整數(shù))。若查找成功,算法輸出該節(jié)點(diǎn)的data域的值,并返回1;否則,只返回0。typedefstructLNodeintdata;structLNode*link;*LinkList;intSearchk(LinkListlist,intk)LinkListp,q;intcount=0;p=q=list-link
3、;while(p!=NULL)if(countlink;p=p-link;if(countdata);return(1);假定采用帶頭節(jié)點(diǎn)的單鏈表保存單詞,當(dāng)兩個(gè)單詞有相同的后綴時(shí),則可共享相同的后綴存儲(chǔ)空間。設(shè)str1和str2分別指向兩個(gè)單詞所在單鏈表的頭節(jié)點(diǎn)請(qǐng)?jiān)O(shè)計(jì)一個(gè)時(shí)間上盡可能高效的算法,找出由str1和str2所指向兩個(gè)鏈表共同后綴的起始位置。typedefstructNodechardata;structNode*next;SNODE;SNODE*Findlist(SNODE*str1,SNODE*str2)intm,n;SNODE*p,*q;m=Listlen(str1);/求單
4、鏈表str1的長(zhǎng)度mn=Listlen(str2);/求單鏈表str2的長(zhǎng)度nfor(p=str1;mn;m-)/若m大,則str1后移m-n+1個(gè)節(jié)點(diǎn)p=p-next;for(q=str2;mnext;while(p-next!=NULL&p-next!=q-next)p=p-next;/p、q兩步后移找第一個(gè)指針值相等的節(jié)點(diǎn)q=q-next;returnp-next;intListlen(SNODE*head)/求單鏈表的長(zhǎng)度intlen=0;while(head-next!=NUL)len+;head=head-next;returnlen;設(shè)計(jì)一個(gè)算法,刪除一個(gè)單鏈表L中元素值最大的節(jié)
5、點(diǎn)。voiddelmaxnode(LinkList*&L)LinkList*p=L-next,*pre=L,*maxp=p,*maxpre=pre;while(p!=NULL)用p掃描整個(gè)單鏈表,pre始終指向其前驅(qū)節(jié)點(diǎn)if(maxp-datadata)/若找到一個(gè)更大的節(jié)點(diǎn)maxp=p;/更改maxpmaxpre=pre;/更改maxprepre=p;/p、pre同步后移一個(gè)節(jié)點(diǎn)p=p-next;maxpre-next=maxp-next;刪除*maxp節(jié)點(diǎn)free(maxp);釋放*maxp節(jié)點(diǎn)有一個(gè)帶頭節(jié)點(diǎn)的單鏈表L(至少有一個(gè)數(shù)據(jù)節(jié)點(diǎn)),設(shè)計(jì)一個(gè)算法使其元素遞增有序排列。voidsor
6、t(LinkList*&L)LinkList*p,*pre,*q;p=L-next-next;/p指向L的第2個(gè)數(shù)據(jù)節(jié)點(diǎn)L-next-next=NULL;/構(gòu)造只含一個(gè)數(shù)據(jù)節(jié)點(diǎn)的有序表while(p!=NULL)q=p-next;q保存*p節(jié)點(diǎn)后繼節(jié)點(diǎn)的指針pre=L;從有序表開(kāi)頭進(jìn)行比較,pre指向插入*卩的前驅(qū)節(jié)點(diǎn)while(pre-next!=NULL&pre-next-datadata)pre=pre-next;在有序表中找插入*p的前驅(qū)節(jié)點(diǎn)*prep-next=pre-next;/將*卩佗之后插入*卩pre-next=p;p=q;/掃描原單鏈表余下的節(jié)點(diǎn)6.有一個(gè)帶頭節(jié)點(diǎn)的雙鏈表L,
7、設(shè)計(jì)一個(gè)算法將其所有元素逆置,即第1個(gè)元素變?yōu)樽詈笠粋€(gè)元素,第2個(gè)元素變?yōu)榈箶?shù)第2個(gè)元素,最后一個(gè)元素變?yōu)榈?個(gè)元素。voidreverse(DLinkList*&L)/雙鏈表節(jié)點(diǎn)逆置DLinkList*p=L-next,*q;/p指向開(kāi)好節(jié)點(diǎn)L-next=NULL;while(p!=NULL)q=p-next;p-next=L-next;if(L-next!=NULL)構(gòu)造只有頭節(jié)點(diǎn)的雙鏈表L/掃描L的數(shù)據(jù)節(jié)點(diǎn)/用q保存其后繼節(jié)點(diǎn)采用頭插法將*p節(jié)點(diǎn)插入/修改其前驅(qū)指針L-next-prior=p;L-next=p;p-prior=L;p=q;/讓p重新指向其后繼節(jié)點(diǎn)編寫(xiě)出判斷帶頭節(jié)點(diǎn)的雙向
8、循環(huán)鏈表L是否對(duì)稱相等的算法。intEqueal(DLinkList*L)intsame=1;DLinkList*p=L-next;/p指向第一個(gè)數(shù)據(jù)節(jié)點(diǎn)DLinkList*q=L-prior;/q指向最后數(shù)據(jù)節(jié)點(diǎn)while(same=1)if(p-data!=q-data)same=0;elseif(p=q)break;/數(shù)據(jù)節(jié)點(diǎn)為奇數(shù)的情況q=q-prior;if(p=q)break;/數(shù)據(jù)節(jié)點(diǎn)為偶數(shù)的情況p=p-next;returnsame;假設(shè)有兩個(gè)有序表LA和LB表示,設(shè)計(jì)一個(gè)算法,將它們合并成一個(gè)有序表LC。要求不破壞原有表LA和LB。voidUnionList(SqList*L
9、A,SqList*LB,SqList*&LC)inti=O,j=O,k=O;/i、j分別為L(zhǎng)A、LB的下標(biāo),k為L(zhǎng)C中元素個(gè)數(shù)LC=(SqList*)malloc(sizeof(SqList);/建立有序順序表LCwhile(ilength&jlength)if(LA-dataidataj)LC-datak=LA-datai;i+;k+;else/LA-dataiLB-datajLC-datak=LB-dataj;j+;k+;while(ivLA-length)/LA尚未掃描完,將其余元素插入LC中LC-datak=LA-datai;i+;k+;while(jlength)/LB尚未掃描完,將
10、其余元素插入LC中LC-datak=LB-dataj;j+;k+;LC-length=k;設(shè)有4個(gè)元素a、b、c、d進(jìn)棧,給出它們所有可能的出棧次序。解:所有可能的出棧次序如下:abcdabdcacbdacdbadcbbacdbadcbcadbcdabdcacbadcbdacdbadcba編寫(xiě)一個(gè)算法利用順序棧判斷一個(gè)字符串是否是對(duì)稱串。所謂對(duì)稱串是指從左向右讀和從右向左讀的序列相同。boolsymmetry(ElemTypestr)inti;ElemTypee;SqStack*st;InitStack(st);/初始化棧for(i=0;stri!=0;i+)/將串所有元素進(jìn)棧Push(st,
11、stri);/元素進(jìn)棧for(i=0;stri!=0;i+)Pop(st,e);/退棧元素eif(stri!=e)/若e與當(dāng)前串元素不同則不是對(duì)稱串DestroyStack(st);/銷(xiāo)毀棧returnfalse;DestroyStack(st);/銷(xiāo)毀棧returntrue;編寫(xiě)一個(gè)算法判斷輸入的表達(dá)式中括號(hào)是否配對(duì)(假設(shè)只含有左、右圓括號(hào))boolMatch(charexp,intn)/初始化棧/初始化棧/掃描exp中所有字符/當(dāng)前字符為左括號(hào),將其進(jìn)棧InitStack(st);while(inext,*q;intfind=0;while(p-next!=NULL&find=0)查找ab
12、子串if(p-data=a&p-next-data=b)找到子串p-data=x;p-next-data=z;替換為xyzq=(LiString*)malloc(sizeof(LiString);q-data=y;q-next=p-next;p-next=q;find=1;elsep=p-next;13.含n個(gè)節(jié)點(diǎn)的三次樹(shù)的最小高度是多少?最大高度是多少?解:設(shè)含n個(gè)節(jié)點(diǎn)的(為完全三次樹(shù)時(shí)高度最小)的三次樹(shù)的最小高度為h,則有:1+3+9+3h-2VnW1+3+9+3h-1(3h-1-1)/2VnW(3h-1)/23h-1V2n+1W3h即:h=log3(2n+1)最大高度為n-2。14.假設(shè)
13、圖G采用鄰接表存儲(chǔ),設(shè)計(jì)一個(gè)算法,輸出圖G中從頂點(diǎn)u到v的所有簡(jiǎn)單路徑。voidPathAll(ALGraph*G,intu,intv,intpath,intd)d是到當(dāng)前為止已走過(guò)的路徑長(zhǎng)度,調(diào)用時(shí)初值為-1intw,intw,i;ArcNode*p;visitedu=1;d+;pathd=u;if(u=v&d1)printf();路徑長(zhǎng)度增1/將當(dāng)前頂點(diǎn)添加到路徑中輸出一條路徑for(i=0;iadjlistu.firstarc;/p指向u的第一條邊while(p!=NULL)w=p-adjvex;w為u的鄰接頂點(diǎn)if(visitedw=0)/若頂點(diǎn)未標(biāo)記訪問(wèn),則遞歸訪問(wèn)之PathAll(
14、G,w,v,path,d);p=p-nextarc/找u的下一個(gè)鄰接頂點(diǎn)visitedu=0;/恢復(fù)環(huán)境voidmain()intpathMAXV,u=1,v=4,i,j;MGraphg;ALGraph*G;g.n=5;g.e=6;intAMAXVMAXV=0,1,0,1,0,1,0,1,0,0,0,1,0,1,1,1,0,1,0,1,0,0,1,1,0;for(i=0;ig.n;i+)/建立圖的鄰接矩陣for(j=0;jg.n;j+)g.edgesij=Aij;MatToList(g,G);for(i=0;ig.n;i+)visitedi=0;printf(圖G:n);DispAdj(G);
15、輸出鄰接表printf(從4到4的所有路徑:n,u,v);PathAll(G,u,v,path,-1);printf(n);15.普里姆(Prim)算法如下:#defineINF32767/INF表示voidPrim(MGraphg,intv)intlowcostMAXV;intmin;intclosestMAXV,i,j,k;for(i=0;ig.n;i+)/給lowcost和closest置初值lowcosti=g.edgesvi;closesti=v;for(i=1;ig.n;i+)找出(n-1)個(gè)頂點(diǎn)min=INF;for(j=0;jg.n;j+)在(V-U)中找出離U最近的頂點(diǎn)kif(lowcostj!=0&lowcostjmin)min=lowcostj;k=j;/k記錄最近頂點(diǎn)的編號(hào)printf(邊(d,%d)權(quán)為:dn,closestk,k,min);lowcostk=0;/標(biāo)記k已經(jīng)加入U(xiǎn)for(j=0;jg.n;j+)/修改數(shù)組lowcost和closestif(g.e
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑工地設(shè)備運(yùn)輸與施工同步保障合同
- 2025年度國(guó)內(nèi)水路貨物運(yùn)輸合同電子化管理與信息共享合同
- 2025年度建筑工程質(zhì)量保修施工合同
- 2025年度供水企業(yè)供水設(shè)備租賃合同保障設(shè)備供應(yīng)
- 2025年度綠色生態(tài)住宅小區(qū)施工合同范本
- 2025年度國(guó)際船舶租賃合同范本及船舶維護(hù)條款
- 2025年度家電產(chǎn)品安全召回與賠償合同
- 2025年度建筑工程掛靠合作風(fēng)險(xiǎn)控制合同樣本
- 2025年度換熱站工程驗(yàn)收合同范本
- 2025年度公司生產(chǎn)規(guī)模拓展資金借款合同范本
- 《水電站繼電保護(hù)》課件
- 沈陽(yáng)市第一屆“舒心傳技 莘紳向陽(yáng)”職業(yè)技能大賽技術(shù)工作文件-27-全媒體運(yùn)營(yíng)師
- 2025年多彩貴州航空有限公司招聘筆試參考題庫(kù)含答案解析
- 安全生產(chǎn)網(wǎng)格員培訓(xùn)
- 深圳建筑工程公司財(cái)務(wù)管理制度
- 統(tǒng)編版語(yǔ)文三年級(jí)下冊(cè)第三單元綜合性學(xué)習(xí)中華傳統(tǒng)節(jié)日 活動(dòng)設(shè)計(jì)
- 降低順產(chǎn)產(chǎn)婦產(chǎn)后2小時(shí)失血率PDCA成果匯報(bào)書(shū)
- 小學(xué)數(shù)學(xué)分?jǐn)?shù)四則混合運(yùn)算300題帶答案
- 2024年考研(英語(yǔ)一)真題及參考答案
- 林下野雞養(yǎng)殖建設(shè)項(xiàng)目可行性研究報(bào)告
- 心肺復(fù)蘇術(shù)課件2024新版
評(píng)論
0/150
提交評(píng)論