版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)結(jié)構(gòu)考試題參考答案1、設(shè)順序表L中的數(shù)據(jù)元素遞增有序。試寫一算法,將數(shù)據(jù)元素x插入到順序表L的適當(dāng)位置,以保持該表的有序性。解:存儲(chǔ)結(jié)構(gòu)為:typedef struct SeqList DataType *data; int MaxLen; int len;SeqList;算法如下:void insertLx(SeqList &L, DataType x) if(L.len=L.maxlen) return; int i=L.len-1;while(i=0 & xnext & p-next-data!=x) p=p-next; /找x的前驅(qū)結(jié)點(diǎn)p;if(!p-next) return; /
2、 若不存在結(jié)點(diǎn)x,則返回;q=new Lnode;q-data=y; q-next=p-next; p-next=q;3、試寫一個(gè)算法,統(tǒng)計(jì)帶頭指針的單鏈表L的元素個(gè)數(shù)。解:存儲(chǔ)結(jié)構(gòu)如下:typedef struct LnodeElemType data; struct Lnode *next;Lnode, *LinkList;算法如下:int length(LinkList L) int len=0;Lnode *p=L;while(p) len+; p=p-next; return len;注:如果單鏈表是帶頭結(jié)點(diǎn)的,則算法如下:int length(LinkList L) int len
3、=0;Lnode *p=L-next;while(p) len+; p=p-next; return len;4、試寫一個(gè)算法,在帶頭結(jié)點(diǎn)的單鏈表L的第k個(gè)結(jié)點(diǎn)后插入一個(gè)結(jié)點(diǎn)x。解:存儲(chǔ)結(jié)構(gòu)如下:typedef struct LnodeElemType data; struct Lnode *next;Lnode, *LinkList;算法如下:void insert_after_k( LinkList L, int k, ElemType x) if(k0) return; Lnode *q, *p=L;int i=0;while(p & inext; /找到第k個(gè)結(jié)點(diǎn)p;if(!p) re
4、turn; /若不存在第k個(gè)結(jié)點(diǎn),則返回;q=new Lnode; q-data=x; q-next=p-next; p-next=q;注:如果是在L的第k個(gè)結(jié)點(diǎn)前插入一個(gè)結(jié)點(diǎn),則找第k-1個(gè)結(jié)點(diǎn)p,然后插入。、試寫一個(gè)算法,在帶頭結(jié)點(diǎn)的單鏈表中刪除所有的數(shù)據(jù)元素為x的結(jié)點(diǎn)。解:存儲(chǔ)結(jié)構(gòu)如下:typedef struct LnodeElemType data; struct Lnode *next;Lnode, *LinkList;算法如下:void Delete_all_x(LinkList L, Elemtype x) Lnode *p, *q; p=L; while(p) if(p-ne
5、xt & p-next-data=x)q=p-next; p-next=q-next; delete q; else p=p-next;注意:要?jiǎng)h除所有的值為x的結(jié)點(diǎn)。、假設(shè)一個(gè)單循環(huán)鏈表的數(shù)據(jù)域?yàn)檎?,設(shè)計(jì)一個(gè)算法,求該表中所有結(jié)點(diǎn)的數(shù)據(jù)之和。解:存儲(chǔ)結(jié)構(gòu)如下:typedef struct LnodeElemType data; struct Lnode *next;Lnode, *LinkList;假設(shè)帶頭結(jié)點(diǎn),且指向頭結(jié)點(diǎn),則算法如下:int sum_Of_Data(LinkList L) int s=0; Lnode *p=L-next;while(p!=L) s+=p-data; p
6、=p-next; return s; 假設(shè)不帶頭結(jié)點(diǎn),且指向循環(huán)鏈表中任何一個(gè)結(jié)點(diǎn),則算法如下:int sum_of_data(LinkList L) int s=0; Lnode *p=L; if(L) s+=p-data; p=p-next; while(p!=L) s+=p-data; p=p-next; return s;注:以上兩種情形,只要給出其中一種情形的解即可。、假設(shè)二叉樹用二叉鏈表存儲(chǔ),設(shè)計(jì)一個(gè)算法,求二叉樹的結(jié)點(diǎn)個(gè)數(shù)。解:存儲(chǔ)結(jié)構(gòu)如下:typedef struct bitnodeElemType data; struct bitnode *lchild, *rchild;b
7、itnode, *bitree;算法如下:int nodes(bitree T) if(!T) return 0; else return (1+nodes(T-lchild)+nodes(T-rchild);、寫一個(gè)算法,建立二叉樹的二叉鏈表。解:存儲(chǔ)結(jié)構(gòu)如下:typedef char ElemType;typedef struct bitnodeElemType data; struct bitnode *lchild, *rchild;bitnode, *bitree;算法如下:void creat_bitree(bitree &T) /按擴(kuò)展的先序序列輸入結(jié)點(diǎn),輸入表示空。ElemTy
8、pe ch; cinch;if(ch=#) T=0;else T=new bitnode; T-data=ch;creat_bitree(T-lchuild);creat_bitree(T-rchild);或者寫成以下算法:bitree creat_bitree(void) /按擴(kuò)展的先序序列輸入結(jié)點(diǎn),輸入表示空。bitree T;ElemType ch; cinch;if(ch=#) T=0;else T=new bitnode; T-data=ch;creat_bitree(T-lchuild);creat_bitree(T-rchild);return T;9、假設(shè)一棵二叉樹的先序序列為
9、EBADCFHGIKJ,中序序列為ABCDEFGHIJK,請(qǐng)畫出該二叉樹,并寫出后序序列。解:該二叉樹如下:后序序列為:ACDBGJKIHFE。10、假設(shè)一棵二叉樹的層次序列為ABCDEFGHIJ,中序序列為DBGEHJACIF,請(qǐng)畫出該二叉樹,并寫出其先序序列和后序序列。解:該二叉樹如下:先序序列為:ABDEGHJCFI;后序序列為:DGJHEBIFCA。11、編寫一個(gè)遞歸算法,將用二叉鏈表表示的二叉樹的所有結(jié)點(diǎn)的左、右子樹交換。解:存儲(chǔ)結(jié)構(gòu)如下:typedef char ElemType;typedef struct bitnodeElemType data; struct bitnode
10、 *lchild, *rchild;bitnode, *bitree;算法如下:void exchange(bitree &T)if(!T) return; bitree temp;temp=T-lchild;T-lchild=T-rchild;T-rchild=temp;exchange(T-lchild);exchange(T-rchild);12、試寫出二叉鏈表表示的二叉樹的先序遍歷的非遞歸算法。解:存儲(chǔ)結(jié)構(gòu)如下:typedef char ElemType;typedef struct bitnodeElemType data; struct bitnode *lchild, *rchild;bitnode, *bitree;算法如下:void preorder(bitree T) /先序遍歷,當(dāng)前結(jié)點(diǎn)入棧。#define MaxNum 20bitree stackMaxNum;int top=0; /指向棧
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 上海紐約大學(xué)《電子設(shè)計(jì)自動(dòng)化技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海南湖職業(yè)技術(shù)學(xué)院《中國(guó)現(xiàn)代史》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海閔行職業(yè)技術(shù)學(xué)院《模具CAE技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海民航職業(yè)技術(shù)學(xué)院《電路設(shè)計(jì)與制版》2023-2024學(xué)年第一學(xué)期期末試卷
- 上??茖W(xué)技術(shù)職業(yè)學(xué)院《機(jī)器學(xué)習(xí)與模式識(shí)別課程設(shè)計(jì)I》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海科技大學(xué)《建筑綜合體實(shí)訓(xùn)餐飲空間》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海健康醫(yī)學(xué)院《程序設(shè)計(jì)面向?qū)ο蟆?023-2024學(xué)年第一學(xué)期期末試卷
- 上海建橋?qū)W院《現(xiàn)代植物生產(chǎn)理論與技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 上海濟(jì)光職業(yè)技術(shù)學(xué)院《數(shù)據(jù)分析基于》2023-2024學(xué)年第一學(xué)期期末試卷
- 公司人員管理制度佳作匯編
- 單軸水泥攪拌樁施工方案設(shè)計(jì)
- 老年人睡眠障礙的護(hù)理(PPT課件)
- 會(huì)陰阻滯麻醉完整版PPT課件
- 《家庭禮儀》PPT課件
- 應(yīng)聘人員面試登記表(應(yīng)聘者填寫)
- T∕CAAA 005-2018 青貯飼料 全株玉米
- s鐵路預(yù)應(yīng)力混凝土連續(xù)梁(鋼構(gòu))懸臂澆筑施工技術(shù)指南
- 撥叉831006設(shè)計(jì)說明書
- 程序語(yǔ)言課程設(shè)計(jì)任意兩個(gè)高次多項(xiàng)式的加法和乘法運(yùn)算
- 石油鉆井八大系統(tǒng)ppt課件
- 北師大版二年級(jí)數(shù)學(xué)上冊(cè)期末考試復(fù)習(xí)計(jì)劃
評(píng)論
0/150
提交評(píng)論