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