习题合集-数据结构导论
文章目錄
- 對n個(gè)記錄的文件進(jìn)行快速排序,所需要的輔助存儲空間的空間復(fù)雜度為:
- 若待排序的序列中存在多個(gè)記錄具有相同的鍵值,經(jīng)過排序,這些記錄的相對次序仍然保持不變,則稱這種排序方法是▲的。
- 在最壞情況下,即對幾乎已是排好序的輸入序列,快速排序算法的效率較低,此時(shí)其時(shí)間復(fù)雜度近似為▲。
- 有一個(gè)整數(shù)序列,其輸入順序?yàn)?0,30,90,-10,45,78,試?yán)脳⑵漭敵鲂蛄懈淖優(yōu)?0,-10,45,90,78,20,寫出該整數(shù)序列進(jìn)棧和出棧的操作步驟。
- 分別寫出題30圖所示的二叉樹的先序遍歷、中序遍歷和后序遍歷三種訪問方式的結(jié)點(diǎn)訪問序列。
- 設(shè)有字符集{,A,B,C,D,E,F},各字符使用頻率對應(yīng)為{2,4,5,13,9,18},試畫出哈夫曼樹(要求任一結(jié)點(diǎn)的左孩子權(quán)值小于右孩子)。
- 試用冒泡法對數(shù)列(45,73,12,23,52,5,38)進(jìn)行遞增排序,寫出第1、2、3、4趟排序結(jié)果,并給出冒泡排序算法的時(shí)間復(fù)雜度。
- 以二叉鏈表作存儲結(jié)構(gòu),試寫出二叉鏈表的結(jié)構(gòu)類型定義,并編寫求二叉樹葉子結(jié)點(diǎn)個(gè)數(shù)的算法。
- 寫出直接插入排序算法。
- 1976年瑞士計(jì)算機(jī)科學(xué)家 Niklaus Wirth曾提出一個(gè)著名公式:程序=數(shù)據(jù)結(jié)構(gòu)+____
- 簡單地說,數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)▲數(shù)據(jù)和存儲數(shù)據(jù)的方式。
- 線性表中結(jié)點(diǎn)個(gè)數(shù)n稱為▲
- 線性表上的插入和刪除運(yùn)算限定在表的某一端進(jìn)行的數(shù)據(jù)結(jié)構(gòu)是▲。
- 對稀疏矩陣進(jìn)行壓縮存儲的目的是節(jié)省▲
- 一個(gè)具有n個(gè)頂點(diǎn)的有向完全圖的弧數(shù)為P=▲
- 構(gòu)造最小生成樹的算法有兩種:Prim算法和▲算法。
- 一棵樹的結(jié)點(diǎn)個(gè)數(shù)最少為▲
- 有K個(gè)葉子結(jié)點(diǎn)的哈夫曼樹,其結(jié)點(diǎn)的總數(shù)為▲
- 由二叉樹的后序序列和▲序列,可以唯一確定一棵二叉樹。
- 二分查找算法的平均時(shí)間復(fù)雜度為▲
- 在帶頭結(jié)點(diǎn)的單鏈表L中,第一個(gè)數(shù)據(jù)元素結(jié)點(diǎn)的指針為
- 棧初始化時(shí)一般將棧頂下標(biāo)值top設(shè)置為
- 設(shè)有一循環(huán)隊(duì)列CQ,隊(duì)列的長度為maxsize,則該循環(huán)隊(duì)列滿的條件為:
- 執(zhí)行進(jìn)棧操作,在元素x進(jìn)棧前需要進(jìn)行的操作是:
- 森林有兩種遍歷方法,分別是:
- 有向圖中某頂點(diǎn)v的入度為2,出度為3,則該頂點(diǎn)的度為
- 利用散列表進(jìn)行査找的基本出發(fā)點(diǎn)是:
- 鏈?zhǔn)酱鎯Φ奶攸c(diǎn)是利用指針來表示數(shù)據(jù)元素之間的__________關(guān)系。
- 單鏈表的每個(gè)結(jié)點(diǎn)包括__________和指針域。
- 設(shè)有一個(gè)單鏈表,若結(jié)點(diǎn)的指針域?yàn)閚ext,則指針P所指的結(jié)點(diǎn)為最后一個(gè)結(jié)點(diǎn)的條件是__________.
- 由于鏈接實(shí)現(xiàn)需要__________,故鏈隊(duì)列在一定范圍內(nèi)不會出現(xiàn)隊(duì)列滿的情況。
- 二叉樹的__________存儲結(jié)構(gòu)可以用一維數(shù)組來實(shí)現(xiàn)。
- 含有10個(gè)葉子結(jié)點(diǎn)的哈夫曼樹,其結(jié)點(diǎn)的總數(shù)為__________。
- 圖的廣度優(yōu)先搜索遍歷類似于樹的按__________遍歷的過程。
- 如果以圖中的頂點(diǎn)來表示活動,有向邊表示活動之間的優(yōu)先關(guān)系,這種用頂點(diǎn)表示活動的 有向圖稱為__________。
- 用數(shù)據(jù)元素的__________通過散列函數(shù)獲取存儲位置的存儲方式構(gòu)造的存儲結(jié)構(gòu)稱為散列表。
- 靜態(tài)查找表是以具有相同特性的數(shù)據(jù)元素集合為邏輯結(jié)構(gòu),包括建表、__________、讀表中元素三種基本運(yùn)算。
- 設(shè)循環(huán)隊(duì)列的元素存放在一維數(shù)組Q[30]中,隊(duì)列非空時(shí),front指示隊(duì)列首結(jié)點(diǎn)的前一個(gè)位置,rear指示隊(duì)列尾結(jié)點(diǎn)。如果隊(duì)列中元素的個(gè)數(shù)為10,front的值為25,則rear應(yīng)指向的元素是:
- 二叉樹第i(i≥1)層上的結(jié)點(diǎn)數(shù)最多為:
- 假設(shè)初始森林中共有n棵二叉樹,每棵樹中都僅有一個(gè)孤立的結(jié)點(diǎn)。將該森林構(gòu)造成哈夫曼樹,則最終求得的哈夫曼樹的結(jié)點(diǎn)數(shù)為:
- 無向圖中的極大連通子圖是:
- 在用鄰接表表示圖時(shí),對圖進(jìn)行深度優(yōu)先搜索遍歷的算法的時(shí)間復(fù)雜度為:
- 靜態(tài)查找表與動態(tài)查找表二者的根本差別在于:
- 在下述四種排序算法中,所需輔助存儲量最多的是:
- 單鏈表各個(gè)結(jié)點(diǎn)在內(nèi)存中的存儲位置并連續(xù)。
- 棧初始化運(yùn)算的目的是。
- 二叉樹的任一結(jié)點(diǎn)都有兩棵子樹,并且這兩棵子樹之間有___關(guān)系。
- 一棵樹中所有結(jié)點(diǎn)的最大值稱為該樹的高度。
- 高度為h(h≥2)的完全二叉樹至少有個(gè)葉子結(jié)點(diǎn)。
- 圖的廣度優(yōu)先搜索遍歷類似于樹的按__遍歷的過程。
- 稀疏矩陣可以采用___法進(jìn)行壓縮存儲。
- 完成拓?fù)渑判虻那疤釛l件是AOV網(wǎng)中不允許出現(xiàn)。
- 數(shù)據(jù)元素的鍵值和之間建立的___對應(yīng)關(guān)系稱為散列函數(shù)。
- 靜態(tài)查找表是以具有相同特性的數(shù)據(jù)元素集合為邏輯結(jié)構(gòu),但不包括插入和___運(yùn)算。
- 設(shè)表中元素的初始狀態(tài)是按鍵值遞增有序的,分別用堆排序、快速排序、冒泡排序和歸并排序方法對其按遞增順序進(jìn)行排序,___排序方法最省時(shí)間。
- 假設(shè)某個(gè)電文由5個(gè)字母a,b,c,d,e組成,每個(gè)字母在電文中出現(xiàn)的次數(shù)為7,9,5,6,12,試為這5個(gè)字母設(shè)計(jì)哈夫曼樹并寫出對應(yīng)的哈夫曼編碼。(構(gòu)建新二叉樹時(shí),要求新二叉樹的左子樹根的權(quán)值小于等于右子樹根的權(quán)值。)
- 與數(shù)據(jù)元素本身的形式、內(nèi)容、相對位置、個(gè)數(shù)無關(guān)的是數(shù)據(jù)的:
- 假設(shè)順序表的長度為n,則在第i(l≤i小于等于n+l)個(gè)元素之前插入一個(gè)新元素x所需移動元素的個(gè)數(shù)為:
- 關(guān)于棧和隊(duì)列,下面敘述正確的是:
- 設(shè)兩個(gè)數(shù)據(jù)元素類型一致的棧共享一維數(shù)組空間data[max]成為雙棧,兩個(gè)棧的棧底分別設(shè)在數(shù)組兩端,這兩個(gè)棧的棧頂變量分別為top1和top2,且top2≥top1,則下列會發(fā)生“上溢”情況的是:
- 設(shè)有一循環(huán)隊(duì)列SQ,現(xiàn)將數(shù)據(jù)x進(jìn)行入隊(duì)操作,語句為:
- 關(guān)于滿二叉樹和完全二叉樹,下面敘述正確的是:
- 二叉鏈表結(jié)構(gòu)形式完全相同的是孩子兄弟鏈表。
- 假設(shè)順序表為(b1,b2,b3),查找b1,b2,b3的概率分別為0.2 , 0.2, 0.6,則順序查找法的平均查找長度為:
- 在插入排序方法中,類似圖書館中整理圖書的過程的是:
- 在估算算法空間復(fù)雜度時(shí),一般只需要分析_________所占用的空間。
- 對于按位置查找運(yùn)算,順序表是隨機(jī)存取,其時(shí)間復(fù)雜度為_________。
- 設(shè)順序表A長度為100,若下標(biāo)從1開始計(jì)數(shù),則刪除元素A[10]需要移動_________個(gè)元素。
- 循環(huán)隊(duì)列的隊(duì)頭指針為front,隊(duì)尾指針為rear,當(dāng)_________時(shí)表明隊(duì)列為空。
- 對于一棵包含n個(gè)結(jié)點(diǎn)的二叉樹,用二叉鏈表存儲時(shí),其指針總數(shù)為_________個(gè)。
- 用于描述分類過程的二叉樹稱為_________
- 在樹形結(jié)構(gòu)中,每一層結(jié)點(diǎn)只能和上一層中的至多一個(gè)結(jié)點(diǎn)相關(guān),而在_________中,任意兩個(gè)結(jié)點(diǎn)之間都可能相關(guān)。
- Dijkstra算法的思想是按照最短路徑長度_________的方法產(chǎn)生從點(diǎn)到其他頂點(diǎn)的最短路徑。
- 遍歷圖的基本方法有深度優(yōu)先搜索和_________優(yōu)先搜索兩種。
- 作為一種數(shù)據(jù)結(jié)構(gòu),查找表的邏輯結(jié)構(gòu)是_________。
- 對于具有n個(gè)元素的數(shù)據(jù)序列,采用二叉排序樹查找,平均查找長度介于_________之間。
- 直接插入排序的空間復(fù)雜度為_________。
- 已知一個(gè)7×6的稀疏矩陣如題29圖所示,試寫出該稀疏矩陣的三元組表示。
- 任意兩個(gè)結(jié)點(diǎn)之間都沒有鄰接關(guān)系,組織形式松散,這種組織形式稱為:
- 線性表、棧和隊(duì)列中的元素具有相同的邏輯結(jié)構(gòu),即_________。
- 為了便于運(yùn)算的實(shí)現(xiàn),在單鏈表的第一個(gè)結(jié)點(diǎn)之前增設(shè)一個(gè)類型相同的結(jié)點(diǎn),稱之為_________。
- 假設(shè)一個(gè)8階的上三角矩陣A按照列優(yōu)先順序壓縮存儲在一維數(shù)組B中,則B數(shù)組的大小應(yīng)為_________。
- 在棧中,允許進(jìn)行插入和刪除操作的一端稱為_________。
- 即使輸入非法數(shù)據(jù),算法也能適當(dāng)?shù)刈龀龇磻?yīng)或進(jìn)行處理,不會產(chǎn)生預(yù)料不到的運(yùn)行結(jié)果,這種評價(jià)算法好壞的因素稱為_________。
- 樹的雙親表示法由一個(gè)一維數(shù)組構(gòu)成,數(shù)組的每個(gè)分量包含_________和雙親域兩個(gè)域。
- 如果包含n個(gè)頂點(diǎn)的連通圖G的一個(gè)子圖G’的邊數(shù)大于n-1,則G’中一定有_________。
- 在含有9個(gè)元素的有序表(2,4,12,18,23,37,49,51,68)中二分查找關(guān)鍵字(關(guān)鍵字即為數(shù)據(jù)元素的值)為37的元素時(shí),所需進(jìn)行的比較次數(shù)為_________次。
- 從未排序序列中依次取出一個(gè)元素與已排序序列中的元素依次進(jìn)行比較,然后將其放在已排序序列的合適位置,該排序方法稱為_________排序法。
- 高度為h的滿二叉樹,如果按層次自上而下,同層從左到右的次序從1開始編號,
- 假設(shè)用于通訊的電文僅由6個(gè)字母A,B,C,D,E,F組成,各個(gè)字母在電文中出現(xiàn)的頻率分別為6,3, 12, 10, 7, 5,試為這6個(gè)字母設(shè)計(jì)哈夫曼樹。(構(gòu)建新二叉樹時(shí),要求新 二叉樹的左子樹根的權(quán)值小于等于右子樹根的權(quán)值。)
- 寫出如題31圖所示的有向圖鄰接矩陣表示和所有拓?fù)渑判蛐蛄小?/font>
- 給定數(shù)據(jù)序列{ 46, 25, 78, 62, 12, 80 },試按元素在序列中的次序?qū)⑺鼈円来尾迦胍豢贸跏紴榭盏亩媾判驑?#xff0c;畫出插入完成后的二叉排序樹。
- 對鍵值序列(61,87,12,3,8,70)以位于最左位置的鍵值為基準(zhǔn)進(jìn)行由小到大的快速排序,請寫出第一趟排序后的結(jié)果,并給出快速排序算法在平均情況和最壞情況下的時(shí)間復(fù)雜度。
- 假設(shè)線性表的數(shù)據(jù)元素的類型為DataType,順序表的結(jié)構(gòu)定義如下:
- 3.算法設(shè)計(jì)題:以二叉鏈表作存儲結(jié)構(gòu),試寫出二叉鏈表的結(jié)構(gòu)類型定義,并編寫求二叉樹葉子節(jié)點(diǎn)個(gè)數(shù)的算法。
- 將一組鍵值{83,69,41,22,15,33,8,76}應(yīng)用二路歸并排序算法從小到大排序,試寫出各趟排序的結(jié)果。
對n個(gè)記錄的文件進(jìn)行快速排序,所需要的輔助存儲空間的空間復(fù)雜度為:
O(log2n)
若待排序的序列中存在多個(gè)記錄具有相同的鍵值,經(jīng)過排序,這些記錄的相對次序仍然保持不變,則稱這種排序方法是▲的。
穩(wěn)定
在最壞情況下,即對幾乎已是排好序的輸入序列,快速排序算法的效率較低,此時(shí)其時(shí)間復(fù)雜度近似為▲。
n2
有一個(gè)整數(shù)序列,其輸入順序?yàn)?0,30,90,-10,45,78,試?yán)脳⑵漭敵鲂蛄懈淖優(yōu)?0,-10,45,90,78,20,寫出該整數(shù)序列進(jìn)棧和出棧的操作步驟。
(用push(x)表示進(jìn)棧,pop(x)表示x出棧)
push 20
push 30
pop 30
push 90
push -10
pop -10
push 45
pop 45
pop 90
push 78
pop 78
pop 20
分別寫出題30圖所示的二叉樹的先序遍歷、中序遍歷和后序遍歷三種訪問方式的結(jié)點(diǎn)訪問序列。
先:
ABDEGCF
中:
DBGEACF
后:
DGEBFCA
設(shè)有字符集{,A,B,C,D,E,F},各字符使用頻率對應(yīng)為{2,4,5,13,9,18},試畫出哈夫曼樹(要求任一結(jié)點(diǎn)的左孩子權(quán)值小于右孩子)。
網(wǎng)上解題思路:
解題過程:
已知散列表的長度為11,散列函數(shù)H(key)=key%11,采用線性探測法解決沖突,試用關(guān)鍵字值的序列:75,25,80,35,60,46,50,55建立散列表。
試用冒泡法對數(shù)列(45,73,12,23,52,5,38)進(jìn)行遞增排序,寫出第1、2、3、4趟排序結(jié)果,并給出冒泡排序算法的時(shí)間復(fù)雜度。
參考答案:
第1趟:45,12,23,52,5,38,73(1分)
第2趟:12,2345,5,38,52,73(1分)
第3題:12,23,5,38,45,52,73(1分)
第4趟:12,5,23,38,45,52,73(1分)
冒泡排序算法的時(shí)間復(fù)雜度為:O(n2)(2分)
以二叉鏈表作存儲結(jié)構(gòu),試寫出二叉鏈表的結(jié)構(gòu)類型定義,并編寫求二叉樹葉子結(jié)點(diǎn)個(gè)數(shù)的算法。
typedef struct btnode {DataType data;struct btnode *lchild, *rchild }* BinTree int leafnode_num(BinTree bt) {if(bt == NULL) return 0;else if (bt->lchild == NULL) && (bt->rchild == NULL)return 1;elsereturn leafnode_num(b->lchild) + leafnode_num(bt->rchild) }寫出直接插入排序算法。
1976年瑞士計(jì)算機(jī)科學(xué)家 Niklaus Wirth曾提出一個(gè)著名公式:程序=數(shù)據(jù)結(jié)構(gòu)+____
算法
簡單地說,數(shù)據(jù)結(jié)構(gòu)是計(jì)算機(jī)▲數(shù)據(jù)和存儲數(shù)據(jù)的方式。
組織
線性表中結(jié)點(diǎn)個(gè)數(shù)n稱為▲
表長
線性表上的插入和刪除運(yùn)算限定在表的某一端進(jìn)行的數(shù)據(jù)結(jié)構(gòu)是▲。
棧
對稀疏矩陣進(jìn)行壓縮存儲的目的是節(jié)省▲
存儲空間
一個(gè)具有n個(gè)頂點(diǎn)的有向完全圖的弧數(shù)為P=▲
n(n-1)
構(gòu)造最小生成樹的算法有兩種:Prim算法和▲算法。
參考答案:
Prim算法
Kruskal或克魯斯卡爾
一棵樹的結(jié)點(diǎn)個(gè)數(shù)最少為▲
0
有K個(gè)葉子結(jié)點(diǎn)的哈夫曼樹,其結(jié)點(diǎn)的總數(shù)為▲
2K-1
哈夫曼樹是最優(yōu)二叉樹,但不一定是完全二叉樹,也不一定是平衡二叉樹
由二叉樹的后序序列和▲序列,可以唯一確定一棵二叉樹。
參考答案:
中序
二分查找算法的平均時(shí)間復(fù)雜度為▲
參考答案:
O(log2n)
在帶頭結(jié)點(diǎn)的單鏈表L中,第一個(gè)數(shù)據(jù)元素結(jié)點(diǎn)的指針為
題目詳解:
在帶頭結(jié)點(diǎn)的單鏈表L中,頭結(jié)點(diǎn)的指針為L,第一個(gè)數(shù)據(jù)元素結(jié)點(diǎn)的指針為L->next。
棧初始化時(shí)一般將棧頂下標(biāo)值top設(shè)置為
題目詳解:
當(dāng)棧頂下標(biāo)值top==0 時(shí)是???#xff0c;棧初始化時(shí)一般將棧頂下標(biāo)值top設(shè)置為0。
設(shè)有一循環(huán)隊(duì)列CQ,隊(duì)列的長度為maxsize,則該循環(huán)隊(duì)列滿的條件為:
題目詳解:
循環(huán)隊(duì)列 隊(duì)滿的條件:(CQ.rear+1)%maxsize == CQ.front;,隊(duì)空的條件是:CQ. rear == CQ. front 。
執(zhí)行進(jìn)棧操作,在元素x進(jìn)棧前需要進(jìn)行的操作是:
題目詳解:
執(zhí)行進(jìn)棧操作,在元素x進(jìn)棧前需要判斷棧是否滿,若棧未滿,top值加1 。執(zhí)行出棧操作,出棧前判斷棧是否空,若棧未空,top值減1。
森林有兩種遍歷方法,分別是:
題目詳解:
森林的遍歷有先序遍歷和中序遍歷兩種方式。
先序遍歷的定義為:
(1)訪問森林中第一棵樹的根結(jié)點(diǎn);
(2)前序遍歷第一棵樹的根結(jié)點(diǎn)的子樹;
(3)前序遍歷去掉第一棵樹后的子森林。
中序遍歷的定義為:
(1)中序遍歷第一棵樹的根結(jié)點(diǎn)的子樹;
(2)訪問森林中第一棵樹的根結(jié)點(diǎn);
(3)中序遍歷去掉第一棵樹后的子森林。
樹遍歷有三種方法:先根遍歷、后根遍歷和層次遍歷。
有向圖中某頂點(diǎn)v的入度為2,出度為3,則該頂點(diǎn)的度為
5
題目詳解:
有向圖頂點(diǎn)的度等于其入度和出度之和。
和樹不一樣,樹不會計(jì)算入度哦,也沒有入度的概念
利用散列表進(jìn)行査找的基本出發(fā)點(diǎn)是:
題目詳解:
利用散列表進(jìn)行査找的基本出發(fā)點(diǎn)是
減少査找過程中的比較次數(shù)。
鏈?zhǔn)酱鎯Φ奶攸c(diǎn)是利用指針來表示數(shù)據(jù)元素之間的__________關(guān)系。
邏輯
題目詳解:
鏈?zhǔn)酱鎯Φ奶攸c(diǎn)是利用指針來表示數(shù)據(jù)元素之間的邏輯關(guān)系,順序存儲的特點(diǎn)是利用存儲的位置來表示數(shù)據(jù)元素之間的邏輯關(guān)系
單鏈表的每個(gè)結(jié)點(diǎn)包括__________和指針域。
數(shù)據(jù)域
題目詳解:
單鏈表的每個(gè)結(jié)點(diǎn)包括數(shù)據(jù)域和指針域,數(shù)據(jù)域存儲數(shù)據(jù),指針域存儲下一個(gè)結(jié)點(diǎn)的地址。
設(shè)有一個(gè)單鏈表,若結(jié)點(diǎn)的指針域?yàn)閚ext,則指針P所指的結(jié)點(diǎn)為最后一個(gè)結(jié)點(diǎn)的條件是__________.
參考答案:
p->next==NULL
由于鏈接實(shí)現(xiàn)需要__________,故鏈隊(duì)列在一定范圍內(nèi)不會出現(xiàn)隊(duì)列滿的情況。
動態(tài)申請空間
題目詳解:
鏈接實(shí)現(xiàn)是 動態(tài)申請空間,只要內(nèi)存夠用,鏈隊(duì)列就不會出現(xiàn)隊(duì)列滿的情況
二叉樹的__________存儲結(jié)構(gòu)可以用一維數(shù)組來實(shí)現(xiàn)。
順序
題目詳解:
二叉樹的的順序存儲結(jié)構(gòu)可以用一維數(shù)組來實(shí)現(xiàn)。
含有10個(gè)葉子結(jié)點(diǎn)的哈夫曼樹,其結(jié)點(diǎn)的總數(shù)為__________。
2K-1=19
題目詳解:
對于10個(gè)葉子結(jié)點(diǎn)的哈夫曼樹,其10個(gè)權(quán)值分量,經(jīng)過10-1次合并又產(chǎn)生10-1個(gè)新結(jié)點(diǎn),從而組成的10+10-1=2*10-1=19個(gè)結(jié)點(diǎn)的哈夫曼樹。
圖的廣度優(yōu)先搜索遍歷類似于樹的按__________遍歷的過程。
層次
是層次,不是層序哦
題目詳解:
圖的廣度優(yōu)先搜索遍歷類似于樹的按層次遍歷的過程, 圖的深度優(yōu)先搜索遍歷類似于樹的先根遍歷的過程。
如果以圖中的頂點(diǎn)來表示活動,有向邊表示活動之間的優(yōu)先關(guān)系,這種用頂點(diǎn)表示活動的 有向圖稱為__________。
AOV網(wǎng)
題目詳解:
本題考核AOV網(wǎng)的概念。
用數(shù)據(jù)元素的__________通過散列函數(shù)獲取存儲位置的存儲方式構(gòu)造的存儲結(jié)構(gòu)稱為散列表。
鍵值
題目詳解:
用數(shù)據(jù)元素的鍵值通過散列函數(shù)獲取存儲位置的存儲方式構(gòu)造的存儲結(jié)構(gòu)稱為散列表。
靜態(tài)查找表是以具有相同特性的數(shù)據(jù)元素集合為邏輯結(jié)構(gòu),包括建表、__________、讀表中元素三種基本運(yùn)算。
查找
題目詳解:
靜態(tài)查找表的概念和基本運(yùn)算
建表,查找,讀表
設(shè)循環(huán)隊(duì)列的元素存放在一維數(shù)組Q[30]中,隊(duì)列非空時(shí),front指示隊(duì)列首結(jié)點(diǎn)的前一個(gè)位置,rear指示隊(duì)列尾結(jié)點(diǎn)。如果隊(duì)列中元素的個(gè)數(shù)為10,front的值為25,則rear應(yīng)指向的元素是:
5
題目詳解:
循環(huán)隊(duì)列的元素的個(gè)數(shù):
當(dāng)rear大于front時(shí),元素的個(gè)數(shù)=rear-front;
當(dāng)front大于rear時(shí),元素的個(gè)數(shù)=M(數(shù)組長度)-(front-rear)。
本題元素的個(gè)數(shù)=30-(25-rear)=10,所以rear的值為5。
二叉樹第i(i≥1)層上的結(jié)點(diǎn)數(shù)最多為:
2i-1
題目詳解:
二叉樹第i(i≥1)層上的結(jié)點(diǎn)數(shù)最多為2i-1。
假設(shè)初始森林中共有n棵二叉樹,每棵樹中都僅有一個(gè)孤立的結(jié)點(diǎn)。將該森林構(gòu)造成哈夫曼樹,則最終求得的哈夫曼樹的結(jié)點(diǎn)數(shù)為:
2n-1
題目詳解:
哈夫曼樹的特點(diǎn):
(1)在哈夫曼樹中,權(quán)值越大的葉子離根結(jié)點(diǎn)越近。
(2)若有n0個(gè)權(quán)值,需要進(jìn)行n0-1次合并,構(gòu)造成為哈夫曼樹。
(3)哈夫曼樹沒有度為1的結(jié)點(diǎn)。
(4)由n0個(gè)權(quán)值構(gòu)成的哈夫曼樹,葉結(jié)點(diǎn)數(shù)為n0,度為2的結(jié)點(diǎn)數(shù)為 n0-1,結(jié)點(diǎn)總數(shù)為n0+ n2= n0+ n0-1=2n0-1。
(5)給定一組權(quán)值,構(gòu)造出的哈夫曼樹的形態(tài)可能不唯一,但它們的帶權(quán)路徑長度都一樣。
無向圖中的極大連通子圖是:
連通分量
題目詳解:
連通分量:無向圖中的極大連通子圖。
生成樹:對于具有n個(gè)頂點(diǎn)的連通圖,包含了該圖的全部n個(gè)頂點(diǎn),僅包含它的n-1條邊的一個(gè)極小連通子圖被稱為生成樹。生成樹本身也是連通的,而且不具有回路。一個(gè)連通圖的生成樹不一定是唯一的。有向圖中任意兩個(gè)頂點(diǎn)之間都有連通,就稱該有向圖是強(qiáng)連通圖。一個(gè)有向圖的極大強(qiáng)連通子圖,稱為該有向圖的強(qiáng)連通分量。
在用鄰接表表示圖時(shí),對圖進(jìn)行深度優(yōu)先搜索遍歷的算法的時(shí)間復(fù)雜度為:
題目詳解:
在用鄰接表表示圖時(shí),對圖進(jìn)行深度優(yōu)先搜索遍歷的算法的時(shí)間復(fù)雜度為O(n+e)。
靜態(tài)查找表與動態(tài)查找表二者的根本差別在于:
施加在其上的操作不同
題目詳解:
靜態(tài)查找表與動態(tài)查找表二者的根本差別在于施加在其上的操作不同,靜態(tài)查找表主要完成的操作是查詢,動態(tài)查找表除了進(jìn)行查詢,也方便進(jìn)行插入和刪除操作。
在下述四種排序算法中,所需輔助存儲量最多的是:
題目詳解:
歸并排序所需要的輔助存儲量最多,為O(n);
快速排序所需輔助存儲量最多的是O(log2n),
其他兩種排序所需要的輔助存儲量為O(1)。
單鏈表各個(gè)結(jié)點(diǎn)在內(nèi)存中的存儲位置并連續(xù)。
參考答案:
不一定
要回答“不一定”,不能回答“錯(cuò)誤”
棧初始化運(yùn)算的目的是。
構(gòu)造一個(gè)空棧
二叉樹的任一結(jié)點(diǎn)都有兩棵子樹,并且這兩棵子樹之間有___關(guān)系。
次序
一棵樹中所有結(jié)點(diǎn)的最大值稱為該樹的高度。
層次數(shù)
高度為h(h≥2)的完全二叉樹至少有個(gè)葉子結(jié)點(diǎn)。
參考答案:
2H-1
圖的廣度優(yōu)先搜索遍歷類似于樹的按__遍歷的過程。
層次
稀疏矩陣可以采用___法進(jìn)行壓縮存儲。
參考答案:
三元組表示
完成拓?fù)渑判虻那疤釛l件是AOV網(wǎng)中不允許出現(xiàn)。
回路
數(shù)據(jù)元素的鍵值和之間建立的___對應(yīng)關(guān)系稱為散列函數(shù)。
參考答案:
存儲位置
靜態(tài)查找表是以具有相同特性的數(shù)據(jù)元素集合為邏輯結(jié)構(gòu),但不包括插入和___運(yùn)算。
刪除
設(shè)表中元素的初始狀態(tài)是按鍵值遞增有序的,分別用堆排序、快速排序、冒泡排序和歸并排序方法對其按遞增順序進(jìn)行排序,___排序方法最省時(shí)間。
參考答案:
冒泡
假設(shè)某個(gè)電文由5個(gè)字母a,b,c,d,e組成,每個(gè)字母在電文中出現(xiàn)的次數(shù)為7,9,5,6,12,試為這5個(gè)字母設(shè)計(jì)哈夫曼樹并寫出對應(yīng)的哈夫曼編碼。(構(gòu)建新二叉樹時(shí),要求新二叉樹的左子樹根的權(quán)值小于等于右子樹根的權(quán)值。)
(1)所構(gòu)造的哈夫曼樹為:
(2)5個(gè)字母對應(yīng)的哈夫曼編碼:a:00 b:01 c:100 d:101 e:11
與數(shù)據(jù)元素本身的形式、內(nèi)容、相對位置、個(gè)數(shù)無關(guān)的是數(shù)據(jù)的:
邏輯結(jié)構(gòu)
題目詳解:
數(shù)據(jù)元素之間的邏輯關(guān)系的整體就稱為數(shù)據(jù)的邏輯結(jié)構(gòu),其與數(shù)據(jù)元素本身的形式、內(nèi)容、相對位置、個(gè)數(shù)無關(guān)。
假設(shè)順序表的長度為n,則在第i(l≤i小于等于n+l)個(gè)元素之前插入一個(gè)新元素x所需移動元素的個(gè)數(shù)為:
n-i+1
居然算錯(cuò)了,被插入位置上的移動沒考慮
關(guān)于棧和隊(duì)列,下面敘述正確的是:
棧和隊(duì)列都是運(yùn)算受限的線性表
題目詳解:
函數(shù)的嵌套調(diào)用用棧來實(shí)現(xiàn)
操作系統(tǒng)中進(jìn)程調(diào)用用隊(duì)列來實(shí)現(xiàn)
程序遞歸的處理用棧來實(shí)現(xiàn)
棧和隊(duì)列是運(yùn)算受限的線性表。
設(shè)兩個(gè)數(shù)據(jù)元素類型一致的棧共享一維數(shù)組空間data[max]成為雙棧,兩個(gè)棧的棧底分別設(shè)在數(shù)組兩端,這兩個(gè)棧的棧頂變量分別為top1和top2,且top2≥top1,則下列會發(fā)生“上溢”情況的是:
題目詳解:
兩個(gè)棧的棧頂變量分別為top1和top2,且top2≥top1;當(dāng)top1+1== top2會發(fā)生“上溢”情況。
設(shè)有一循環(huán)隊(duì)列SQ,現(xiàn)將數(shù)據(jù)x進(jìn)行入隊(duì)操作,語句為:
題目詳解:
循環(huán)隊(duì)列SQ,現(xiàn)將數(shù)據(jù)x進(jìn)行入隊(duì)操作:先移動隊(duì)尾SQ.rear=(SQ.rear+1)% maxsize; 再插入元素SQ.data[SQ.rear]=x;
關(guān)于滿二叉樹和完全二叉樹,下面敘述正確的是:
題目詳解:
滿二叉樹一定是完全二叉樹,完全二叉樹不一定是滿二叉樹,由n個(gè)結(jié)點(diǎn)構(gòu)成的完全二叉樹
二叉鏈表結(jié)構(gòu)形式完全相同的是孩子兄弟鏈表。
假設(shè)順序表為(b1,b2,b3),查找b1,b2,b3的概率分別為0.2 , 0.2, 0.6,則順序查找法的平均查找長度為:
題目詳解:
0.23+0.22+0.6*1=1.6
從后往前找,或者應(yīng)該是從大到小找
在插入排序方法中,類似圖書館中整理圖書的過程的是:
直接插入排序
題目詳解:
圖書館中整理圖書的過程的是1本書插到已經(jīng)有序的一排書中間,使得整體有序,這個(gè)過程類似于直接插入排序。
在估算算法空間復(fù)雜度時(shí),一般只需要分析_________所占用的空間。
輔助變量
對于按位置查找運(yùn)算,順序表是隨機(jī)存取,其時(shí)間復(fù)雜度為_________。
O(1)
設(shè)順序表A長度為100,若下標(biāo)從1開始計(jì)數(shù),則刪除元素A[10]需要移動_________個(gè)元素。
90
刪除是n-i
插入是n-i+1
循環(huán)隊(duì)列的隊(duì)頭指針為front,隊(duì)尾指針為rear,當(dāng)_________時(shí)表明隊(duì)列為空。
參考答案:
REAR==FRONT
對于一棵包含n個(gè)結(jié)點(diǎn)的二叉樹,用二叉鏈表存儲時(shí),其指針總數(shù)為_________個(gè)。
2n
用于描述分類過程的二叉樹稱為_________
判定樹
在樹形結(jié)構(gòu)中,每一層結(jié)點(diǎn)只能和上一層中的至多一個(gè)結(jié)點(diǎn)相關(guān),而在_________中,任意兩個(gè)結(jié)點(diǎn)之間都可能相關(guān)。
圖結(jié)構(gòu)
Dijkstra算法的思想是按照最短路徑長度_________的方法產(chǎn)生從點(diǎn)到其他頂點(diǎn)的最短路徑。
遞增
遍歷圖的基本方法有深度優(yōu)先搜索和_________優(yōu)先搜索兩種。
廣度
作為一種數(shù)據(jù)結(jié)構(gòu),查找表的邏輯結(jié)構(gòu)是_________。
集合
對于具有n個(gè)元素的數(shù)據(jù)序列,采用二叉排序樹查找,平均查找長度介于_________之間。
參考答案:
O(N)和O(LOG2N)
直接插入排序的空間復(fù)雜度為_________。
O(1)
已知一個(gè)7×6的稀疏矩陣如題29圖所示,試寫出該稀疏矩陣的三元組表示。
參考答案:
該稀疏矩陣可表示為如下三元組表:((0,0,16), (0,5,-16), (1,2,3), (2,3,-8), (4,0,91), (6,2,15))
任意兩個(gè)結(jié)點(diǎn)之間都沒有鄰接關(guān)系,組織形式松散,這種組織形式稱為:
集合
題目詳解:
數(shù)據(jù)的邏輯結(jié)構(gòu)分為4種基本類型:
①集合。集合中任何兩個(gè)數(shù)據(jù)元素之間都沒有邏輯關(guān)系,組織形式松散。
②線性結(jié)構(gòu)。線性結(jié)構(gòu)中的結(jié)點(diǎn)按邏輯關(guān)系依次排列形成一個(gè)“鎖鏈”。
③樹形結(jié)構(gòu)。樹形結(jié)構(gòu)具有分支、層次特性,其形態(tài)有點(diǎn)像自然界中的樹。
④圖狀結(jié)構(gòu)。圖狀結(jié)構(gòu)中的結(jié)點(diǎn)按邏輯關(guān)系互相纏繞,任何兩個(gè)結(jié)點(diǎn)都可以鄰接。
線性表、棧和隊(duì)列中的元素具有相同的邏輯結(jié)構(gòu),即_________。
線性結(jié)構(gòu)
不能答順序結(jié)構(gòu)哦
為了便于運(yùn)算的實(shí)現(xiàn),在單鏈表的第一個(gè)結(jié)點(diǎn)之前增設(shè)一個(gè)類型相同的結(jié)點(diǎn),稱之為_________。
頭節(jié)點(diǎn)
假設(shè)一個(gè)8階的上三角矩陣A按照列優(yōu)先順序壓縮存儲在一維數(shù)組B中,則B數(shù)組的大小應(yīng)為_________。
上三角矩陣,大小為:8 + 7 + 6 + 5 +4 +3 + 2 + 1 也就是等差數(shù)組公式 n(n+1)/2=72/2=36
在棧中,允許進(jìn)行插入和刪除操作的一端稱為_________。
棧頂
這地方有棧頂和棧底
即使輸入非法數(shù)據(jù),算法也能適當(dāng)?shù)刈龀龇磻?yīng)或進(jìn)行處理,不會產(chǎn)生預(yù)料不到的運(yùn)行結(jié)果,這種評價(jià)算法好壞的因素稱為_________。
健壯性
樹的雙親表示法由一個(gè)一維數(shù)組構(gòu)成,數(shù)組的每個(gè)分量包含_________和雙親域兩個(gè)域。
數(shù)據(jù)域
如果包含n個(gè)頂點(diǎn)的連通圖G的一個(gè)子圖G’的邊數(shù)大于n-1,則G’中一定有_________。
環(huán)
在含有9個(gè)元素的有序表(2,4,12,18,23,37,49,51,68)中二分查找關(guān)鍵字(關(guān)鍵字即為數(shù)據(jù)元素的值)為37的元素時(shí),所需進(jìn)行的比較次數(shù)為_________次。
3
本題說明二分偶數(shù)時(shí),選擇floor
從未排序序列中依次取出一個(gè)元素與已排序序列中的元素依次進(jìn)行比較,然后將其放在已排序序列的合適位置,該排序方法稱為_________排序法。
直接插入
要答直接插入,不是插入哦
高度為h的滿二叉樹,如果按層次自上而下,同層從左到右的次序從1開始編號,
試問:
(1)該樹上有多少個(gè)結(jié)點(diǎn)?
(2)編號為i的結(jié)點(diǎn)的左孩子和右孩子(若存在)的編號分別是多少?
(1)2h-1
(2)2i與2i+1
假設(shè)用于通訊的電文僅由6個(gè)字母A,B,C,D,E,F組成,各個(gè)字母在電文中出現(xiàn)的頻率分別為6,3, 12, 10, 7, 5,試為這6個(gè)字母設(shè)計(jì)哈夫曼樹。(構(gòu)建新二叉樹時(shí),要求新 二叉樹的左子樹根的權(quán)值小于等于右子樹根的權(quán)值。)
寫出如題31圖所示的有向圖鄰接矩陣表示和所有拓?fù)渑判蛐蛄小?/font>
(1)有向圖鄰接矩陣表示
(2)所有拓?fù)渑判蛐蛄?#xff1a;DAEBFC;DABEFC。
給定數(shù)據(jù)序列{ 46, 25, 78, 62, 12, 80 },試按元素在序列中的次序?qū)⑺鼈円来尾迦胍豢贸跏紴榭盏亩媾判驑?#xff0c;畫出插入完成后的二叉排序樹。
題目詳解:
通常采用逐點(diǎn)插入結(jié)點(diǎn)的方法來構(gòu)造二叉排序樹,其方法表述如下:設(shè)K={kl,k2,k3,…,kn}為數(shù)據(jù)元素序列。從k1開始依次取序列中的元素,每取出一個(gè)數(shù)據(jù)元素ki按下列原則建立二叉排序樹的一個(gè)結(jié)點(diǎn):
① 若二叉排序樹為空,則ki就是該二叉排序樹的根結(jié)點(diǎn)。
② 若二叉排序樹非空,則將ki與該二叉排序樹的根結(jié)點(diǎn)的值進(jìn)行比較。若ki小于根結(jié)點(diǎn)的值,則將ki插入到根結(jié)點(diǎn)的左子樹中,否則將ki插入到根結(jié)點(diǎn)的右子樹中。
對鍵值序列(61,87,12,3,8,70)以位于最左位置的鍵值為基準(zhǔn)進(jìn)行由小到大的快速排序,請寫出第一趟排序后的結(jié)果,并給出快速排序算法在平均情況和最壞情況下的時(shí)間復(fù)雜度。
參考答案:
(1)第一趟排序后的結(jié)果:[8 3 12] 61 [87 70]
(2) 快速排序算法在平均情況下的時(shí)間復(fù)雜度為O(nlogn),在最壞情況下的時(shí)間復(fù)雜度為O(n)。
假設(shè)線性表的數(shù)據(jù)元素的類型為DataType,順序表的結(jié)構(gòu)定義如下:
設(shè)計(jì)算法實(shí)現(xiàn)順序表的插入運(yùn)算InsertSeqlist(SeqList L,DataType x,int i)。該算法是指在順序表的第i(l≤i ≤ n+1)個(gè)元素之前,插入一個(gè)新元素x。使長度為n的線性表 (a1,a2,…,ai-1,ai,…,an)變?yōu)殚L度為n+1的線性表(a1,a2,…,ai一1,X,ai,…,an)。
參考答案:
void InsertSeqlist(SeqListL,DataTypex,int i)
{
if(L.length == Maxsize)
exit(“表已滿”);
if(i< 1||i> L.length + 1)
exit(“位置錯(cuò)”);
for(j= L.length; j>=i; j–)
L.data[j]= L.data[j-1];
L.data[i-1]= x;
L.length++;
}
3.算法設(shè)計(jì)題:以二叉鏈表作存儲結(jié)構(gòu),試寫出二叉鏈表的結(jié)構(gòu)類型定義,并編寫求二叉樹葉子節(jié)點(diǎn)個(gè)數(shù)的算法。
二叉鏈表的結(jié)構(gòu)類型定義如下:
typedef struct btnode {DataType data;struct btnode *lchild, *rchild }* BinTree int leafnode_num(BinTree bt) {if(bt == NULL) return 0;else if (bt->lchild == NULL) && (bt->rchild == NULL)return 1;elsereturn leafnode_num(b->lchild) + leafnode_num(bt->rchild) }將一組鍵值{83,69,41,22,15,33,8,76}應(yīng)用二路歸并排序算法從小到大排序,試寫出各趟排序的結(jié)果。
參考答案:
初始鍵值:[83][69] [41][22][15][ 33][8][76]
第一題:[69 83][22 41][15 33][8 76]
第二樓:[22 41 69 83][8 15 33 76]
第三道:[8 15 22 33 41 69 76 83]
總結(jié)
以上是生活随笔為你收集整理的习题合集-数据结构导论的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(2146):vue中TypeE
- 下一篇: 读《自己动手写操作系统》(于渊著)第一节