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