九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

東南大學(xué)十套數(shù)據(jù)結(jié)構(gòu)試題及答案.doc

  • 資源ID:6572853       資源大?。?span id="24d9guoke414" class="font-tahoma">441KB        全文頁(yè)數(shù):23頁(yè)
  • 資源格式: DOC        下載積分:9.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

東南大學(xué)十套數(shù)據(jù)結(jié)構(gòu)試題及答案.doc

數(shù)據(jù)結(jié)構(gòu)試卷(一)三、計(jì)算題(每題 6 分,共24分)1. 在如下數(shù)組A中鏈接存儲(chǔ)了一個(gè)線性表,表頭指針為A 0.next,試寫出該線性表。 A 0 1 2 3 4 5 6 7 data605078903440next35720412. 請(qǐng)畫(huà)出下圖的鄰接矩陣和鄰接表。 3. 已知一個(gè)圖的頂點(diǎn)集V和邊集E分別為:V=1,2,3,4,5,6,7; E=(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15,(3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25; 用克魯斯卡爾算法得到最小生成樹(shù),試寫出在最小生成樹(shù)中依次得到的各條邊。4. 畫(huà)出向小根堆中加入數(shù)據(jù)4, 2, 5, 8, 3時(shí),每加入一個(gè)數(shù)據(jù)后堆的變化。四、閱讀算法(每題7分,共14分)1. LinkList mynote(LinkList L) /L是不帶頭結(jié)點(diǎn)的單鏈表的頭指針 if(L&&L->next) q=L;L=L>next;p=L; S1: while(p>next) p=p>next; S2: p>next=q;q>next=NULL; return L; 請(qǐng)回答下列問(wèn)題: (1)說(shuō)明語(yǔ)句S1的功能; (2)說(shuō)明語(yǔ)句組S2的功能; (3)設(shè)鏈表表示的線性表為(a1,a2, ,an),寫出算法執(zhí)行后的返回值所表示的線性表。2. void ABC(BTNode * BT) if BT ABC (BT->left); ABC (BT->right); cout<<BT->data<< ; 該算法的功能是:五、算法填空(共8分)二叉搜索樹(shù)的查找遞歸算法:bool Find(BTreeNode* BST,ElemType& item) if (BST=NULL) return false; /查找失敗 else if (item=BST->data) item=BST->data;/查找成功 return _; else if(item<BST->data) return Find(_,item); else return Find(_,item); /if六、編寫算法(共8分)統(tǒng)計(jì)出單鏈表HL中結(jié)點(diǎn)的值等于給定值X的結(jié)點(diǎn)數(shù)。 int CountX(LNode* HL,ElemType x)數(shù)據(jù)結(jié)構(gòu)試卷(二)三、應(yīng)用題(36分)1 設(shè)一組初始記錄關(guān)鍵字序列為(45,80,48,40,22,78),則分別給出第4趟簡(jiǎn)單選擇排序和第4趟直接插入排序后的結(jié)果。2 設(shè)指針變量p指向雙向鏈表中結(jié)點(diǎn)A,指針變量q指向被插入結(jié)點(diǎn)B,要求給出在結(jié)點(diǎn)A的后面插入結(jié)點(diǎn)B的操作序列(設(shè)雙向鏈表中結(jié)點(diǎn)的兩個(gè)指針域分別為llink和rlink)。3 設(shè)一組有序的記錄關(guān)鍵字序列為(13,18,24,35,47,50,62,83,90),查找方法用二分查找,要求計(jì)算出查找關(guān)鍵字62時(shí)的比較次數(shù)并計(jì)算出查找成功時(shí)的平均查找長(zhǎng)度。4 設(shè)一棵樹(shù)T中邊的集合為(A,B),(A,C),(A,D),(B,E),(C,F(xiàn)),(C,G),要求用孩子兄弟表示法(二叉鏈表)表示出該樹(shù)的存儲(chǔ)結(jié)構(gòu)并將該樹(shù)轉(zhuǎn)化成對(duì)應(yīng)的二叉樹(shù)。5 設(shè)有無(wú)向圖G,要求給出用普里姆算法構(gòu)造最小生成樹(shù)所走過(guò)的邊的集合。6 設(shè)有一組初始記錄關(guān)鍵字為(45,80,48,40,22,78),要求構(gòu)造一棵二叉排序樹(shù)并給出構(gòu)造過(guò)程。四、算法設(shè)計(jì)題(16分) 1 設(shè)有一組初始記錄關(guān)鍵字序列(K1,K2,Kn),要求設(shè)計(jì)一個(gè)算法能夠在O(n)的時(shí)間復(fù)雜度內(nèi)將線性表劃分成兩部分,其中左半部分的每個(gè)關(guān)鍵字均小于Ki,右半部分的每個(gè)關(guān)鍵字均大于等于Ki。2 設(shè)有兩個(gè)集合A和集合B,要求設(shè)計(jì)生成集合C=AB的算法,其中集合A、B和C用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)表示。數(shù)據(jù)結(jié)構(gòu)試卷(三)二填空題1. 下列算法實(shí)現(xiàn)在順序散列表中查找值為x的關(guān)鍵字,請(qǐng)?jiān)谙聞澗€處填上正確的語(yǔ)句。struct recordint key; int others;int hashsqsearch(struct record hashtable ,int k)int i,j; j=i=k % p;while (hashtablej.key!=k&&hashtablej.flag!=0)j=(_) %m; if (i=j) return(-1); if (_ ) return(j); else return(-1);2. 下列算法實(shí)現(xiàn)在二叉排序樹(shù)上查找關(guān)鍵值k,請(qǐng)?jiān)谙聞澗€處填上正確的語(yǔ)句。typedef struct nodeint key; struct node *lchild; struct node *rchild;bitree;bitree *bstsearch(bitree *t, int k) if (t=0 ) return(0);else while (t!=0)if (t->key=k)_; else if (t->key>k) t=t->lchild; else_;三、計(jì)算題(每題10分,共30分)1.已知二叉樹(shù)的前序遍歷序列是AEFBGCDHIKJ,中序遍歷序列是EFAGBCHKIJD,畫(huà)出此二叉樹(shù),并畫(huà)出它的后序線索二叉樹(shù)。2已知待散列的線性表為(36,15,40,63,22),散列用的一維地址空間為0.6,假定選用的散列函數(shù)是H(K)= K mod 7,若發(fā)生沖突采用線性探查法處理,試:(1)計(jì)算出每一個(gè)元素的散列地址并在下圖中填寫出散列表: 0 1 2 3 4 5 6(2)求出在查找每一個(gè)元素概率相等情況下的平均查找長(zhǎng)度。3已知序列(10,18,4,3,6,12,1,9,18,8)請(qǐng)用快速排序?qū)懗雒恳惶伺判虻慕Y(jié)果。四、算法設(shè)計(jì)題(每題15分,共30分)1 設(shè)計(jì)在單鏈表中刪除值相同的多余結(jié)點(diǎn)的算法。2 設(shè)計(jì)一個(gè)求結(jié)點(diǎn)x在二叉樹(shù)中的雙親結(jié)點(diǎn)算法。數(shù)據(jù)結(jié)構(gòu)試卷(四)1 設(shè)一組初始記錄關(guān)鍵字序列為(20,18,22,16,30,19),則以20為中軸的一趟快速排序結(jié)果為_(kāi)。2 設(shè)一組初始記錄關(guān)鍵字序列為(20,18,22,16,30,19),則根據(jù)這些初始關(guān)鍵字序列建成的初始堆為_(kāi)。3 設(shè)某無(wú)向圖G中有n個(gè)頂點(diǎn),用鄰接矩陣A作為該圖的存儲(chǔ)結(jié)構(gòu),則頂點(diǎn)i和頂點(diǎn)j互為鄰接點(diǎn)的條件是_。4 設(shè)無(wú)向圖對(duì)應(yīng)的鄰接矩陣為A,則A中第i上非0元素的個(gè)數(shù)_第i列上非0元素的個(gè)數(shù)(填等于,大于或小于)。5 設(shè)前序遍歷某二叉樹(shù)的序列為ABCD,中序遍歷該二叉樹(shù)的序列為BADC,則后序遍歷該二叉樹(shù)的序列為_(kāi)。6 設(shè)散列函數(shù)H(k)=k mod p,解決沖突的方法為鏈地址法。要求在下列算法劃線處填上正確的語(yǔ)句完成在散列表hashtalbe中查找關(guān)鍵字值等于k的結(jié)點(diǎn),成功時(shí)返回指向關(guān)鍵字的指針,不成功時(shí)返回標(biāo)志0。typedef struct node int key; struct node *next; lklist; void createlkhash(lklist *hashtable )int i,k; lklist *s;for(i=0;i<m;i+)_;for(i=0;i<n;i+)s=(lklist *)malloc(sizeof(lklist); s->key=ai;k=ai % p; s->next=hashtablek;_;三、計(jì)算題(每題10分,共30分)1、畫(huà)出廣義表LS=( ) , (e) , (a , (b , c , d )的頭尾鏈表存儲(chǔ)結(jié)構(gòu)。2、下圖所示的森林:(1) 求樹(shù)(a)的先根序列和后根序列; (2) 求森林先序序列和中序序列;(3)將此森林轉(zhuǎn)換為相應(yīng)的二叉樹(shù);3、設(shè)散列表的地址范圍是 0.9 ,散列函數(shù)為H(key)= (key 2 +2)MOD 9,并采用鏈表處理沖突,請(qǐng)畫(huà)出元素7、4、5、3、6、2、8、9依次插入散列表的存儲(chǔ)結(jié)構(gòu)。四、算法設(shè)計(jì)題(每題10分,共30分)1 設(shè)單鏈表中有僅三類字符的數(shù)據(jù)元素(大寫字母、數(shù)字和其它字符),要求利用原單鏈表中結(jié)點(diǎn)空間設(shè)計(jì)出三個(gè)單鏈表的算法,使每個(gè)單鏈表只包含同類字符。2. 設(shè)計(jì)在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)上交換二叉樹(shù)中所有結(jié)點(diǎn)左右子樹(shù)的算法。3. 在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)上建立一棵二叉排序樹(shù)。數(shù)據(jù)結(jié)構(gòu)試卷(五)1. 下面程序段的功能是實(shí)現(xiàn)冒泡排序算法,請(qǐng)?jiān)谙聞澗€處填上正確的語(yǔ)句。void bubble(int rn)for(i=1;i<=n-1; i+)for(exchange=0,j=0; j<_;j+) if (rj>rj+1)temp=rj+1;_;rj=temp;exchange=1;if (exchange=0) return;2. 下面程序段的功能是實(shí)現(xiàn)二分查找算法,請(qǐng)?jiān)谙聞澗€處填上正確的語(yǔ)句。struct recordint key; int others;int bisearch(struct record r , int k) int low=0,mid,high=n-1; while(low<=high) _; if(rmid.key=k) return(mid+1); else if(_) high=mid-1;else low=mid+1; return(0);三、應(yīng)用題(32分)1. 設(shè)某棵二叉樹(shù)的中序遍歷序列為DBEAC,前序遍歷序列為ABDEC,要求給出該二叉樹(shù)的的后序遍歷序列。2. 設(shè)無(wú)向圖G(如右圖所示),給出該圖的最小生成樹(shù)上邊的集合并計(jì)算最小生成樹(shù)各邊上的權(quán)值之和。3. 設(shè)一組初始記錄關(guān)鍵字序列為(15,17,18,22,35,51,60),要求計(jì)算出成功查找時(shí)的平均查找長(zhǎng)度。4. 設(shè)散列表的長(zhǎng)度為8,散列函數(shù)H(k)=k mod 7,初始記錄關(guān)鍵字序列為(25,31,8,27,13,68),要求分別計(jì)算出用線性探測(cè)法和鏈地址法作為解決沖突方法的平均查找長(zhǎng)度。四、算法設(shè)計(jì)題(28分)1 設(shè)計(jì)判斷兩個(gè)二叉樹(shù)是否相同的算法。2 設(shè)計(jì)兩個(gè)有序單鏈表的合并排序算法。數(shù)據(jù)結(jié)構(gòu)試卷(六)四、算法設(shè)計(jì)題(20分) 設(shè)計(jì)在順序有序表中實(shí)現(xiàn)二分查找的算法。 設(shè)計(jì)判斷二叉樹(shù)是否為二叉排序樹(shù)的算法。 在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)上設(shè)計(jì)直接插入排序算法數(shù)據(jù)結(jié)構(gòu)試卷(七)三、填空題(30分)1. 下面程序段的功能是實(shí)現(xiàn)一趟快速排序,請(qǐng)?jiān)谙聞澗€處填上正確的語(yǔ)句。struct record int key;datatype others;void quickpass(struct record r, int s, int t, int &i) int j=t; struct record x=rs; i=s; while(i<j) while (i<j && rj.key>x.key) j=j-1; if (i<j) ri=rj;i=i+1; while (_) i=i+1; if (i<j) rj=ri;j=j-1; _;四、算法設(shè)計(jì)題(20分)1. 設(shè)計(jì)在鏈?zhǔn)浇Y(jié)構(gòu)上實(shí)現(xiàn)簡(jiǎn)單選擇排序算法。2. 設(shè)計(jì)在順序存儲(chǔ)結(jié)構(gòu)上實(shí)現(xiàn)求子串算法。3. 設(shè)計(jì)求結(jié)點(diǎn)在二叉排序樹(shù)中層次的算法。數(shù)據(jù)結(jié)構(gòu)試卷(八)三、填空題(30分)1 設(shè)一組初始記錄關(guān)鍵字序列為(49,38,65,97,76,13,27,50),則以d=4為增量的一趟希爾排序結(jié)束后的結(jié)果為_(kāi)。2 下面程序段的功能是實(shí)現(xiàn)在二叉排序樹(shù)中插入一個(gè)新結(jié)點(diǎn),請(qǐng)?jiān)谙聞澗€處填上正確的內(nèi)容。typedef struct nodeint data;struct node *lchild;struct node *rchild;bitree;void bstinsert(bitree *&t,int k)if (t=0 ) _;t->data=k;t->lchild=t->rchild=0;else if (t->data>k) bstinsert(t->lchild,k);else_;3 設(shè)指針變量p指向單鏈表中結(jié)點(diǎn)A,指針變量s指向被插入的結(jié)點(diǎn)X,則在結(jié)點(diǎn)A的后面插入結(jié)點(diǎn)X需要執(zhí)行的語(yǔ)句序列:s->next=p->next; _;。4 設(shè)指針變量head指向雙向鏈表中的頭結(jié)點(diǎn),指針變量p指向雙向鏈表中的第一個(gè)結(jié)點(diǎn),則指針變量p和指針變量head之間的關(guān)系是p=_和head=_(設(shè)結(jié)點(diǎn)中的兩個(gè)指針域分別為llink和rlink)。5 設(shè)某棵二叉樹(shù)的中序遍歷序列為ABCD,后序遍歷序列為BADC,則其前序遍歷序列為_(kāi)。6 完全二叉樹(shù)中第5層上最少有_個(gè)結(jié)點(diǎn),最多有_個(gè)結(jié)點(diǎn)。7 設(shè)有向圖中不存在有向邊<Vi,Vj>,則其對(duì)應(yīng)的鄰接矩陣A中的數(shù)組元素Aij的值等于_。8 設(shè)一組初始記錄關(guān)鍵字序列為(49,38,65,97,76,13,27,50),則第4趟直接選擇排序結(jié)束后的結(jié)果為_(kāi)。9 設(shè)連通圖G中有n個(gè)頂點(diǎn)e條邊,則對(duì)應(yīng)的最小生成樹(shù)上有_條邊。10 設(shè)有一組初始記錄關(guān)鍵字序列為(50,16,23,68,94,70,73),則將它們調(diào)整成初始堆只需把16與_相互交換即可。四、算法設(shè)計(jì)題(20分)1. 設(shè)計(jì)一個(gè)在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)上統(tǒng)計(jì)二叉樹(shù)中結(jié)點(diǎn)個(gè)數(shù)的算法。2. 設(shè)計(jì)一個(gè)算法將無(wú)向圖的鄰接矩陣轉(zhuǎn)為對(duì)應(yīng)鄰接表的算法。數(shù)據(jù)結(jié)構(gòu)試卷(九)五、算法設(shè)計(jì)題(20分)1 設(shè)計(jì)計(jì)算二叉樹(shù)中所有結(jié)點(diǎn)值之和的算法。2 設(shè)計(jì)將所有奇數(shù)移到所有偶數(shù)之前的算法。3 設(shè)計(jì)判斷單鏈表中元素是否是遞增的算法。數(shù)據(jù)結(jié)構(gòu)試卷(十)二、填空題(48分,其中最后兩小題各6分)1. 設(shè)指針變量p指向單鏈表中結(jié)點(diǎn)A,則刪除結(jié)點(diǎn)A的語(yǔ)句序列為:q=p->next;p->data=q->data;p->next=_;feee(q);2. 數(shù)據(jù)結(jié)構(gòu)從邏輯上劃分為三種基本類型:_、_和_。3. 設(shè)無(wú)向圖G中有n個(gè)頂點(diǎn)e條邊,則用鄰接矩陣作為圖的存儲(chǔ)結(jié)構(gòu)進(jìn)行深度優(yōu)先或廣度優(yōu)先遍歷時(shí)的時(shí)間復(fù)雜度為_(kāi);用鄰接表作為圖的存儲(chǔ)結(jié)構(gòu)進(jìn)行深度優(yōu)先或廣度優(yōu)先遍歷的時(shí)間復(fù)雜度為_(kāi)。4. 設(shè)散列表的長(zhǎng)度為8,散列函數(shù)H(k)=k % 7,用線性探測(cè)法解決沖突,則根據(jù)一組初始關(guān)鍵字序列(8,15,16,22,30,32)構(gòu)造出的散列表的平均查找長(zhǎng)度是_。5. 設(shè)一組初始關(guān)鍵字序列為(38,65,97,76,13,27,10),則第3趟冒泡排序結(jié)束后的結(jié)果為_(kāi)。6. 設(shè)一組初始關(guān)鍵字序列為(38,65,97,76,13,27,10),則第3趟簡(jiǎn)單選擇排序后的結(jié)果為_(kāi)。7. 設(shè)有向圖G中的有向邊的集合E=<1,2>,<2,3>,<1,4>,<4,5>,<5,3>,<4,6>,<6,5>,則該圖的一個(gè)拓?fù)湫蛄袨開(kāi)。8. 下面程序段的功能是建立二叉樹(shù)的算法,請(qǐng)?jiān)谙聞澗€處填上正確的內(nèi)容。typedef struct nodeint data;struct node *lchild;_;bitree;void createbitree(bitree *&bt)scanf(“%c”,&ch);if(ch=#) _;else bt=(bitree*)malloc(sizeof(bitree); bt->data=ch; _;createbitree(bt->rchild);9. 下面程序段的功能是利用從尾部插入的方法建立單鏈表的算法,請(qǐng)?jiān)谙聞澗€處填上正確的內(nèi)容。typedef struct node int data; struct node *next; lklist; void lklistcreate(_ *&head ) for (i=1;i<=n;i+) p=(lklist *)malloc(sizeof(lklist);scanf(“%d”,&(p->data);p->next=0;if(i=1)head=q=p;else q->next=p;_; 三、算法設(shè)計(jì)題(22分)1 設(shè)計(jì)在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)上合并排序的算法。2 設(shè)計(jì)在二叉排序樹(shù)上查找結(jié)點(diǎn)X的算法。3 設(shè)關(guān)鍵字序列(k1,k2,kn-1)是堆,設(shè)計(jì)算法將關(guān)鍵字序列(k1,k2,kn-1,x)調(diào)整為堆。 數(shù)據(jù)結(jié)構(gòu)試卷(一)參考答案三、計(jì)算題(每題6分,共24分)1. 線性表為:(78,50,40,60,34,90)2. 鄰接矩陣: 鄰接表如圖11所示:圖113. 用克魯斯卡爾算法得到的最小生成樹(shù)為: (1,2)3, (4,6)4, (1,3)5, (1,4)8, (2,5)10, (4,7)204. 見(jiàn)圖124444422255285283452843圖12四、 讀算法(每題7分,共14分)1. (1)查詢鏈表的尾結(jié)點(diǎn)(2)將第一個(gè)結(jié)點(diǎn)鏈接到鏈表的尾部,作為新的尾結(jié)點(diǎn) (3)返回的線性表為(a2,a3,an,a1) 2. 遞歸地后序遍歷鏈?zhǔn)酱鎯?chǔ)的二叉樹(shù)。五、 法填空(每空2分,共8 分)true BST->left BST->right 六、 編寫算法(8分)int CountX(LNode* HL,ElemType x) int i=0; LNode* p=HL;/i為計(jì)數(shù)器 while(p!=NULL) if (P->data=x) i+; p=p->next; /while, 出循環(huán)時(shí)i中的值即為x結(jié)點(diǎn)個(gè)數(shù) return i; /CountX 數(shù)據(jù)結(jié)構(gòu)試卷(二)參考答案三、應(yīng)用題1. (22,40,45,48,80,78),(40,45,48,80,22,78)2. q->llink=p; q->rlink=p->rlink; p->rlink->llink=q; p->rlink=q;3. 2,ASL=91*1+2*2+3*4+4*2)=25/94. 樹(shù)的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)略,二叉樹(shù)略5. E=(1,3),(1,2),(3,5),(5,6),(6,4)6. 略四、算法設(shè)計(jì)題1. 設(shè)有一組初始記錄關(guān)鍵字序列(K1,K2,Kn),要求設(shè)計(jì)一個(gè)算法能夠在O(n)的時(shí)間復(fù)雜度內(nèi)將線性表劃分成兩部分,其中左半部分的每個(gè)關(guān)鍵字均小于Ki,右半部分的每個(gè)關(guān)鍵字均大于等于Ki。void quickpass(int r, int s, int t) int i=s, j=t, x=rs; while(i<j)while (i<j && rj>x) j=j-1; if (i<j) ri=rj;i=i+1; while (i<j && ri<x) i=i+1; if (i<j) rj=ri;j=j-1; ri=x;2. 設(shè)有兩個(gè)集合A和集合B,要求設(shè)計(jì)生成集合C=AB的算法,其中集合A、B和C用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)表示。typedef struct node int data; struct node *next;lklist;void intersection(lklist *ha,lklist *hb,lklist *&hc)lklist *p,*q,*t;for(p=ha,hc=0;p!=0;p=p->next) for(q=hb;q!=0;q=q->next) if (q->data=p->data) break;if(q!=0) t=(lklist *)malloc(sizeof(lklist); t->data=p->data;t->next=hc; hc=t; 數(shù)據(jù)結(jié)構(gòu)試卷(三)參考答案二填空題13.j+1,hashtablej.key=k14.return(t),t=t->rchild三、計(jì)算題1 2、H(36)=36 mod 7=1; H(22)=(1+1) mod 7=2; .沖突H(15)=15 mod 7=1;.沖突 H2(22)=(2+1) mod 7=3; H(15)=(1+1) mod 7=2;H(40)=40 mod 7=5;H(63)=63 mod 7=0;H(22)=22 mod 7=1; .沖突(1) 0 1 2 3 4 5 66336152240(2)ASL=3、(8,9,4,3,6,1),10,(12,18,18) (1,6,4,3),8,(9),10,12,(18,18) 1,(3,4,6),8,9,10,12,18,(18) 1,3,(4,6),8,9,10,12,18,18 1,3, 4,6,8,9,10,12,18,18四、算法設(shè)計(jì)題1. 設(shè)計(jì)在單鏈表中刪除值相同的多余結(jié)點(diǎn)的算法。typedef int datatype;typedef struct node datatype data; struct node *next;lklist;void delredundant(lklist *&head) lklist *p,*q,*s; for(p=head;p!=0;p=p->next) for(q=p->next,s=q;q!=0; ) if (q->data=p->data) s->next=q->next; free(q);q=s->next; else s=q,q=q->next; 2. 設(shè)計(jì)一個(gè)求結(jié)點(diǎn)x在二叉樹(shù)中的雙親結(jié)點(diǎn)算法。typedef struct node datatype data; struct node *lchild,*rchild; bitree;bitree *q20; int r=0,f=0,flag=0;void preorder(bitree *bt, char x) if (bt!=0 && flag=0)if (bt->data=x) flag=1; return;else r=(r+1)% 20; qr=bt; preorder(bt->lchild,x); preorder(bt->rchild,x); void parent(bitree *bt,char x) int i; preorder(bt,x); for(i=f+1; i<=r; i+) if (qi->lchild->data=x | qi->rchild->data) break; if (flag=0) printf("not found xn"); else if (i<=r) printf("%c",bt->data); else printf("not parent");數(shù)據(jù)結(jié)構(gòu)試卷(四)參考答案二、填空題1. (19,18,16,20,30,22)2. (16,18,19,20,32,22)3. Aij=14. 等于5. BDCA6. hashtablei=0,hashtablek=s三、計(jì)算題12 (1) ABCDEF; BDEFCA;(2) ABCDEFGHIJK; BDEFCAIJKHG林轉(zhuǎn)換為相應(yīng)的二叉樹(shù);3H(4)=H(5)=0,H(3)=H(6)=H(9)=2,H(8)=3,H(2)=H(7)=6四、算法設(shè)計(jì)題1. 設(shè)單鏈表中有僅三類字符的數(shù)據(jù)元素(大寫字母、數(shù)字和其它字符),要求利用原單鏈表中結(jié)點(diǎn)空間設(shè)計(jì)出三個(gè)單鏈表的算法,使每個(gè)單鏈表只包含同類字符。typedef char datatype;typedef struct node datatype data; struct node *next;lklist;void split(lklist *head,lklist *&ha,lklist *&hb,lklist *&hc) lklist *p; ha=0,hb=0,hc=0; for(p=head;p!=0;p=head) head=p->next; p->next=0; if (p->data>=A && p->data<=Z) p->next=ha; ha=p; else if (p->data>=0 && p->data<=9) p->next=hb; hb=p; else p->next=hc; hc=p; 2. 設(shè)計(jì)在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)上交換二叉樹(shù)中所有結(jié)點(diǎn)左右子樹(shù)的算法。typedef struct node int data; struct node *lchild,*rchild; bitree;void swapbitree(bitree *bt) bitree *p; if(bt=0) return;swapbitree(bt->lchild); swapbitree(bt->rchild);p=bt->lchild; bt->lchild=bt->rchild; bt->rchild=p;3. 在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)上建立一棵二叉排序樹(shù)。#define n 10typedef struct nodeint key; struct node *lchild,*rchild;bitree;void bstinsert(bitree *&bt,int key) if (bt=0)bt=(bitree *)malloc(sizeof(bitree); bt->key=key;bt->lchild=bt->rchild=0; else if (bt->key>key) bstinsert(bt->lchild,key); else bstinsert(bt->rchild,key);void createbsttree(bitree *&bt) int i; for(i=1;i<=n;i+) bstinsert(bt,random(100); 數(shù)據(jù)結(jié)構(gòu)試卷(五)參考答案二、填空題1. n-i,rj+1=rj2. mid=(low+high)/2,rmid.key>k三、應(yīng)用題2. DEBCA3. E=(1,5),(5,2),(5,3),(3,4),W=104. ASL=(1*1+2*2+3*4)/7=17/75. ASL1=7/6,ASL2=4/3四、算法設(shè)計(jì)題1. 設(shè)計(jì)判斷兩個(gè)二叉樹(shù)是否相同的算法。typedef struct node datatype data; struct node *lchild,*rchild; bitree;int judgebitree(bitree *bt1,bitree *bt2) if (bt1=0 && bt2=0) return(1); else if (bt1=0 | bt2=0 |bt1->data!=bt2->data) return(0); else return(judgebitree(bt1->lchild,bt2->lchild)*judgebitree(bt1->rchild,bt2->rchild);2. 設(shè)計(jì)兩個(gè)有序單鏈表的合并排序算法。void mergelklist(lklist *ha,lklist *hb,lklist *&hc) lklist *s=hc=0; while(ha!=0 && hb!=0) if(ha->data<hb->data)if(s=0) hc=s=ha; else s->next=ha; s=ha;ha=ha->next; else if(s=0) hc=s=hb; else s->next=hb; s=hb;hb=hb->next; if(ha=0) s->next=hb; else s->next=ha;數(shù)據(jù)結(jié)構(gòu)試卷(六)參考答案四、算法設(shè)計(jì)題1. 設(shè)計(jì)在順序有序表中實(shí)現(xiàn)二分查找的算法。struct record int key; int others;int bisearch(struct record r , int k) int low=0,mid,high=n-1; while(low<=high) mid=(low+high)/2; if(rmid.key=k) return(mid+1); else if(rmid.key>k) high=mid-1; else low=mid+1; return(0);2. 設(shè)計(jì)判斷二叉樹(shù)是否為二叉排序樹(shù)的算法。int minnum=-32768,flag=1;typedef struct nodeint key; struct node *lchild,*rchild;bitree;void inorder(bitree *bt) if (bt!=0) inorder(bt->lchild); if(minnum>bt->key)flag=0; minnum=bt->key;inorder(bt->rchild);3. 在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)上設(shè)計(jì)直接插入排序算法void straightinsertsort(lklist *&head) lklist *s,*p,*q; int t; if (head=0 | head->next=0) return; else for(q=head,p=head->next;p!=0;p=q->next) for(s=head;s!=q->next;s=s->next) if (s->data>p->data) break; if(s=q->next)q=p;elseq->next=p->next; p->next=s->next; s->next=p; t=p->data;p->data=s->data;s->data=t; 數(shù)據(jù)結(jié)構(gòu)試卷(七)參考答案三填空題1. i<j && ri.key<x.key,ri=x四、算法設(shè)計(jì)題1. 設(shè)計(jì)在鏈?zhǔn)浇Y(jié)構(gòu)上實(shí)現(xiàn)簡(jiǎn)單選擇排序算法。void simpleselectsorlklist(lklist *&head) lklist *p,*q,*s; int min,t; if(head=0 |head->next=0) return; for(q=head; q!=0;q=q->next) min=q->data; s=q; for(p=q->next; p!=0;p=p->next) if(min>p->data)min=p->data; s=p; if(s!=q)t=s->data; s->data=q->data; q->data=t; 2. 設(shè)計(jì)在順序存儲(chǔ)結(jié)構(gòu)上實(shí)現(xiàn)求子串算法。void substring(char s , long start, long count, char t ) long i,j,length=strlen(s); if (start<1 | start>length) printf("The copy position is wrong"); else if (start+count-1>length) printf("Too characters to be copied");else for(i=start-1,j=0; i<start+count-1;i+,j+) tj=si; tj= 0;3. 設(shè)計(jì)求結(jié)點(diǎn)在二叉排序樹(shù)中層次的算法。int lev=0;typedef struct nodeint key; struct node *lchild,*rchild;bitree;void level(bitree *bt,int x) if (bt!=0)lev+; if (bt->key=x) return; else if (bt->key>x) level(bt->lchild,x); else level(bt->rchild,x); 數(shù)據(jù)結(jié)構(gòu)試卷(八)參考答案三、填空題1. (49,13,27,50,76,38,65,97)2. t=(bitree *)malloc(sizeof(bitree),bstinsert(t->rchild,k)3. p->next=s4. head->rlink,p->llink5. CABD6. 1,167. 08. (13,27,38,50,76,49,65,97)9. n-110. 50四、算法設(shè)計(jì)題1. 設(shè)計(jì)一個(gè)在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)上統(tǒng)計(jì)二叉樹(shù)中結(jié)點(diǎn)個(gè)數(shù)的算法。void countnode(bitree *bt,int &count) if(bt!=0) count+; countnode(bt->lchild,count); countnode(bt->rchild,count);2. 設(shè)計(jì)一個(gè)算法將無(wú)向圖的鄰接矩陣轉(zhuǎn)為對(duì)應(yīng)鄰接表的算法。typedef struct int vertexm; int edgemm;gadjmatrix;typedef struct node1int info;int adjvertex; struct node1 *nextarc;glinklistnode;typedef struct node2int vertexinfo;glinklistnode *firstarc;glinkheadnode;void adjmatrixtoadjlist(gadjmatrix g1 ,glinkheadnode g2 )int i,j; glinklistnode *p;for(i=0;i<=n-1;i+) g2i.firstarc=0;for(i=0;i<=n-1;i+) for(j=0;j<=n-1;j+)if (g1.edgeij=1)p=(glinklistnode *)malloc(sizeof(glinklistnode);p->adjvertex=j;p->nextarc=gi.firstarc; gi.firstarc=p;p=(glinklistnode *)malloc(sizeof(glinklistnode);p->adjvertex=i;p->nextarc=gj.firstarc; gj.firstarc=p;數(shù)據(jù)結(jié)構(gòu)試卷(九)參考答案四、算法設(shè)計(jì)題1 設(shè)計(jì)計(jì)算二叉樹(shù)中所有結(jié)點(diǎn)值之和的算法。void sum(bitree *bt,int &s) if(bt!=0) s=s+bt->data; sum(bt->lchild,s); sum(bt->rchild,s);2 設(shè)計(jì)將所有奇數(shù)移到所有偶數(shù)之前的算法。void quickpass(int r, int s, int t) int i=s,j=t,x=rs; while(i<j) while (i<j && rj%2=0) j=j-1; if (i<j) ri=rj;i=i+1; while (i<j && ri%2=1) i=i+1; if (i<j) rj=ri;j=j-1; ri=x;3 設(shè)計(jì)判斷單鏈表中元素是否是遞增的算法。int isriselk(lklist *head)if(head=0|head->next=0) return(1);elsefor(q=head,p=head->next; p!=0; q=p,p=p->next)if(q->data>p->data) return(0);return(1);數(shù)據(jù)結(jié)構(gòu)試卷(十)參考答案二、填空題1. q->next2. 線性結(jié)構(gòu),樹(shù)型結(jié)構(gòu),圖型結(jié)構(gòu)3. O(n2), O(n+e)4. 8/35. (38,13,27,10,65,76,97)6. (10,13,27,76,65,97,38)7. 1246538. struct node *rchild,bt=0,createbitree(bt->lchild)9. lklist,q=p三、算法設(shè)計(jì)題1. 設(shè)計(jì)在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)上合并排序的算法。void mergelklist(lklist *ha,lklist *hb,lklist *&hc) lklist *s=hc=0; while(ha!=0 && hb!=0) if(ha->data<hb->data)if(s=0) hc=s=ha; else s->next=ha; s=ha;ha=ha->next; else if(s=0) hc=s=hb; else s->next=hb; s=hb;hb=hb->next; if(ha=0) s->next=hb; else s->next=ha;2. 設(shè)計(jì)在二叉排序樹(shù)上查找結(jié)點(diǎn)X的算法。bitree *bstsearch1(bitree *t, int key) bitree *p=t; while(p!=0) if (p->key=key) return(p);else if (p->key>key)p=p->lchild; else p=p->rchild; return(0);3. 設(shè)關(guān)鍵字序列(k1,k2,kn-1)是堆,設(shè)計(jì)算法將關(guān)鍵字序列(k1,k2,kn-1,x)調(diào)整為堆。void adjustheap(int r ,int n) int j=n,i=j/2,temp=rj-1; while (i>=1) if (temp>=ri-1)break; elserj-1=ri-1; j=i; i=i/2; rj-1=temp;

注意事項(xiàng)

本文(東南大學(xué)十套數(shù)據(jù)結(jié)構(gòu)試題及答案.doc)為本站會(huì)員(w****2)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!