版權(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)考試題參考答案1、設(shè)順序表L中的數(shù)據(jù)元素遞增有序。試寫(xiě)一算法,將數(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、試寫(xiě)一個(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、試寫(xiě)一個(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,然后插入。、試寫(xiě)一個(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è)二叉樹(shù)用二叉鏈表存儲(chǔ),設(shè)計(jì)一個(gè)算法,求二叉樹(shù)的結(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);、寫(xiě)一個(gè)算法,建立二叉樹(shù)的二叉鏈表。解:存儲(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);或者寫(xiě)成以下算法: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è)一棵二叉樹(shù)的先序序列為
9、EBADCFHGIKJ,中序序列為ABCDEFGHIJK,請(qǐng)畫(huà)出該二叉樹(shù),并寫(xiě)出后序序列。解:該二叉樹(shù)如下:后序序列為:ACDBGJKIHFE。10、假設(shè)一棵二叉樹(shù)的層次序列為ABCDEFGHIJ,中序序列為DBGEHJACIF,請(qǐng)畫(huà)出該二叉樹(shù),并寫(xiě)出其先序序列和后序序列。解:該二叉樹(shù)如下:先序序列為:ABDEGHJCFI;后序序列為:DGJHEBIFCA。11、編寫(xiě)一個(gè)遞歸算法,將用二叉鏈表表示的二叉樹(shù)的所有結(jié)點(diǎn)的左、右子樹(shù)交換。解:存儲(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、試寫(xiě)出二叉鏈表表示的二叉樹(shù)的先序遍歷的非遞歸算法。解:存儲(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ú)特殊說(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 美術(shù)館室內(nèi)設(shè)計(jì)招投標(biāo)樣本
- 公積金貸款利率變動(dòng)趨勢(shì)
- 航空器材貨車(chē)司機(jī)招聘合同樣本
- 節(jié)假日貨車(chē)租賃合同樣本
- 月底銷(xiāo)售沖刺總結(jié)5篇
- 體育館防潮層施工承包合同
- 交通運(yùn)輸會(huì)計(jì)招聘合同范本
- 污水處理廠泵房建設(shè)合同
- 產(chǎn)業(yè)園區(qū)混凝土施工合同
- 服裝剪裁刀具選擇原則
- YY∕T 1782-2021 骨科外固定支架力學(xué)性能測(cè)試方法(高清最新版)
- 西亞教學(xué)設(shè)計(jì)與反思
- 乙酸乙酯的反應(yīng)器設(shè)計(jì)流程圖
- EM277的DP通訊使用詳解
- 耐壓絕緣測(cè)試報(bào)告
- 野獸派 beast 花店 調(diào)研 設(shè)計(jì)-文檔資料
- 水泵房每日巡視檢查表
- 杭州市區(qū)汽車(chē)客運(yùn)站臨時(shí)加班管理規(guī)定
- 墊片沖壓模具設(shè)計(jì)畢業(yè)設(shè)計(jì)論文
- 冷庫(kù)工程特點(diǎn)施工難點(diǎn)分析及對(duì)策
- Python-Django開(kāi)發(fā)實(shí)戰(zhàn)
評(píng)論
0/150
提交評(píng)論