《南京工程學(xué)院 數(shù)據(jù)結(jié)構(gòu)樣卷09級(jí)加答案》由會(huì)員分享,可在線閱讀,更多相關(guān)《南京工程學(xué)院 數(shù)據(jù)結(jié)構(gòu)樣卷09級(jí)加答案(13頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、數(shù)據(jù)結(jié)構(gòu)09
一. 填空題(26分,每空2分)
1. 聲明抽象數(shù)據(jù)類型的目的是________________________________________。
2. 已知結(jié)點(diǎn)類Node有data和next域,下列數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)聲明分別為
__________________________________和_____________________________________。
3. 已知SString s1("aababbabac"),s2("aba");,執(zhí)行下列語(yǔ)句后,s1字符串是______________。
s1.replaceAll(s1.sub
2、string(0,1),s2);
s1.removeAll(s2.substring(0,2));
4. 中綴表達(dá)式A+B*(C-D*(E+F)/G+H)-(I+J)*K的后綴表達(dá)式為_(kāi)_____________________。
5. 設(shè)一個(gè)順序循環(huán)隊(duì)列容量為60,當(dāng)front=47,rear=23時(shí),該隊(duì)列有__________個(gè)元素。
6. 已知二維數(shù)組a[10][8]采用行主序存儲(chǔ),數(shù)組首地址是1000,每個(gè)元素占用4字節(jié),則數(shù)組元素a[4][5]的存儲(chǔ)地址是__________________________。
7. 已知一棵完全二叉樹(shù)的根(第0個(gè))結(jié)點(diǎn)層次為1,則
3、第100個(gè)結(jié)點(diǎn)的層次為_(kāi)______。
8. 中根遍歷序列和后根遍歷序列相反的二叉樹(shù)是_________________________________。
9. 由256個(gè)權(quán)值構(gòu)造一棵哈夫曼樹(shù),則該二叉樹(shù)共有________________結(jié)點(diǎn)。
10. 由n個(gè)頂點(diǎn)組成的無(wú)向連通圖,最多可以有_____________________條邊。
11. 10個(gè)元素的排序數(shù)據(jù)序列采用折半查找的平均查找長(zhǎng)度 是(寫(xiě)出算式)_____________________________________________________。
12. 已知關(guān)鍵字序列為{67,41,34,10,6
4、9,24,78,54,41*},采用快速排序算法按升序排序,以第一個(gè)元素為基準(zhǔn)值,其第一趟排序后的關(guān)鍵字序列為_(kāi)___________________________。
二. 問(wèn)答題(45分,每小題5分)
1. 已知目標(biāo)串為"aabcbabcaabcaababc",模式串為"abcaababc",寫(xiě)出模式串改進(jìn)的next數(shù)組;畫(huà)出KMP算法的匹配過(guò)程,給出字符比較次數(shù)。
2. 什么是棧和隊(duì)列??jī)烧哂泻萎愅??什么情況下需要使用棧或隊(duì)列?采用順序存儲(chǔ)結(jié)構(gòu)的棧和隊(duì)列,在進(jìn)行插入、刪除操作時(shí)需要移動(dòng)數(shù)據(jù)元素嗎?為什么?什么是隊(duì)列的假溢出?為什么順序存儲(chǔ)結(jié)構(gòu)隊(duì)列會(huì)出現(xiàn)假溢出?怎樣解決隊(duì)列的假
5、溢出問(wèn)題?鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)隊(duì)列會(huì)出現(xiàn)假溢出嗎?順序存儲(chǔ)結(jié)構(gòu)的棧會(huì)出現(xiàn)假溢出嗎?為什么?
3. 已知一棵二叉樹(shù)中根次序遍歷序列為GCBHKAMFDJE,后根次序遍歷序列為CBGHMAJEDFK,畫(huà)出這棵二叉樹(shù)并進(jìn)行中序線索化。
4. 設(shè)一段正文由字符集{A,B,C,D,E,F,G,H}組成,其中每個(gè)字符在正文中的出現(xiàn)次數(shù)依次為{23,5,17,4,9,31,29,18},采用哈夫曼編碼對(duì)這段正文進(jìn)行壓縮存儲(chǔ),畫(huà)出所構(gòu)造的哈夫曼樹(shù),并寫(xiě)出每個(gè)字符的哈夫曼編碼。
5. 刪除以下帶權(quán)無(wú)向圖中的頂點(diǎn)D,畫(huà)出刪除D后圖的鄰接矩陣表示和鄰接表表示。
6. 構(gòu)造以下帶權(quán)無(wú)向圖的最小生成樹(shù),
6、并給出該最小生成樹(shù)的代價(jià)。
7. 已知關(guān)鍵字序列為{16,74,60,43,54,90,46,31,29,88,71,64,50},散列表長(zhǎng)度為11,采用除留余數(shù)法的散列函數(shù)為hash(k)=k % 11,畫(huà)出采用鏈地址法構(gòu)造的散列表,計(jì)算 (寫(xiě)出算式)。
8. 畫(huà)出對(duì)關(guān)鍵字序列{93,17,56,42,78,15,42*,25,19}進(jìn)行希爾排序(升序)的每一趟排序過(guò)程,說(shuō)明希爾排序算法的穩(wěn)定性并解釋原因,以及希爾排序適用于什么存儲(chǔ)結(jié)構(gòu)。
9. 將關(guān)鍵字序列{29,10,25,26,58,12,31,18,47}用篩選法分別建成一個(gè)最大堆和一個(gè)最小堆,寫(xiě)出兩個(gè)堆序列并畫(huà)出其對(duì)
7、應(yīng)的完全二叉樹(shù)。
三. 程序閱讀和改錯(cuò)題(15分,每小題5分)
1. 閱讀以下函數(shù),回答問(wèn)題。
template
void CirHDoublyLinkedList::concat(CirHDoublyLinkedList &list)
{
DLinkNode *rear=head->prev;
rear->next = list.head->next;
list.head->next->prev = rear;
rear=list.head->prev;
rear->next =
8、 this->head;
this->head->prev = rear;
list.head->prev = list.head;
list.head->next = list.head;
}
上述函數(shù)功能是什么?以下調(diào)用語(yǔ)句的運(yùn)行結(jié)果是什么?
CirHDoublyLinkedList source("abcdef",6), list("xyz",3);
source.concat(list);
cout<<"source:"<