数据结构习题及解析三
來源:我是碼農,轉載請保留出處和鏈接!
本文鏈接:數據結構習題解析三
一、選擇題
1.二叉樹中第5層上的結點個數最多為______
A. 8
B. 15
C. 16
D. 32
數據結構復習題解析解析:本題考點是二叉樹中各層結點個數的計算方法。
二叉樹中第i層上的結點個數最多為2i-1。因此,本題參考答案是C。
2.一個無向連通圖的生成樹是含有該連通圖的全部頂點的_____。
A. 極小連通子圖
B. 極小子圖
C. 極大連通子圖
D. 極大子圖
數據結構復習題解析解析:本題考點是極小連通子圖的概念。
一個連通圖的生成樹是一個極小連通子圖,它含有圖中全部頂點,但只有足以構成一棵樹的n-1條邊。因此,本題參考答案是A。
3.堆的形狀是一棵______。
A. 二叉排序樹
B. 滿二叉樹
C. 完全二叉樹
D. 平衡二叉樹
數據結構復習題解析解析:本題考點是堆與完全二叉樹的關系。
完全二叉樹:除最后一層外,每一層上的節點數均達到最大值;在最后一層上只缺少右邊的若干結點。堆是一種完全二叉樹或者近似完全二叉樹,所以效率極高。因此,本題參考答案是C。
4.在一棵具有n個結點的二叉樹中,所有結點的空子樹個數等于_____。
A. n
B. n-1
C. n+1
D. 2n
數據結構復習題解析解析:本題考點是二叉樹的性質。
結點有n個,于是子樹總數為2n,所以的邊數為n-1,因此結點的空子樹數量為2n-(n-1)= n+1因此,本題參考答案是C。
5.有向圖的一個頂點的度為該頂點的___ 。
A. 入度
B. 出度
C. 入度與出度之和
D. (入度+出度)/2
數據結構復習題解析解析:本題考點是有向圖中頂點度的概念。
有向圖的某個頂點v,把以v為終點的邊的數目,稱為v的入度;以v為始點的邊的數目,稱為v的出度;v的度則定義為該頂點的入度和出度之和。因此,本題參考答案是C。
6.對線性表進行折半查找時,要求線性表必須 。
A. 以順序方式存儲
B. 以鏈接方式存儲
C. 以順序方式存儲,且元素按關鍵字有序排序
D. 以鏈接方式存儲,且元素按關鍵字有序排序
數據結構復習題解析解析:本題考點是線性表折半查找的條件。
折半查找的前提條件是線性表以順序方式存儲,且元素按關鍵字有序排序,因此,本題參考答案是C。
7.在一個有向圖中,所有頂點的度數之和等于所有弧數的______倍。
A. 3
B. 2
C. 1
D. 1/2
數據結構復習題解析解析:本題考點是有向圖頂點度數與弧數的關系。
有向圖的某個頂點v,把以v為終點的邊的數目,稱為v的入度;以v為始點的邊的數目,稱為v的出度;v的度則定義為該頂點的入度和出度之和。顯然,在一個有向圖中,所有頂點的度數之和等于所有弧數的2倍。因此,本題參考答案是B。
8.一棵樹的廣義表表示為a(b?, d(e(g(h)), f)),則該二叉樹中度為1的結點數為___。
A. 2
B. 3
C. 4
D. 5
數據結構復習題解析解析:本題考點是廣義表與二叉樹的轉換。
二叉樹中的度就是分支的數目。沒有分叉的二叉樹節點的度就是0度。如果一個節點只有一個分叉就是1度。兩個分叉就是2度。該廣義表轉換為二叉樹后,度為1的結點是b,e,g。因此,本題參考答案是B。
9.在一棵深度為h的完全二叉樹中,所含結點個數不大于______。
A. 2h
B. 2h+1
C. 2h -1
D. 2h-1
數據結構復習題解析解析:本題考點是完全二叉樹中結點的個數。
在一棵深度為h的完全二叉樹中,所含結點個數不大于2h -1。回答此題可以用實例來驗證,例如當h=2時,完全二叉樹最多有3個結點。因此,本題參考答案是C。
10.對于順序存儲的有序表(5, 12, 20, 26, 37, 42, 46, 50, 64),為查找元素26,若采用折半查找,需要比較______次才能查找成功。
A. 3
B. 4
C. 5
D. 6
數據結構復習題解析解析:本題考點是折半查找的基本思想。
二分查找又稱折半查找,優點是比較次數少,查找速度快,平均性能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查找方法適用于不經常變動而查找頻繁的有序列表。首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查找關鍵字比較,如果兩者相等,則查找成功;否則利用中間位置記錄將表分成前、后兩個子表,如果中間位置記錄的關鍵字大于查找關鍵字,則進一步查找前一子表,否則進一步查找后一子表。重復以上過程,直到找到滿足條件的記錄,使查找成功,或直到子表不存在為止,此時查找不成功。因此,本題參考答案是B。
11.以下哪一個術語與數據的存儲結構無關_____
A. 順序表
B. 靜態數組
C. 二叉樹
D. 鏈表
數據結構復習題解析解析:本題考點是數據結構的基本概念。
二叉樹是每個節點最多有兩個子樹的樹結構,不是數據的存儲結構。因此,本題參考答案是C。
12.對于只在表的首、尾進行插入操作的線性表,宜采用的存儲結構為______
A. 順序表
B. 用頭指針表示的單循環鏈表
C. 用尾指針表示的單循環鏈表
D. 單鏈表
數據結構復習題解析解析:本題考點是循環鏈表的優點。
插入和刪除方便的存儲結構是鏈表,這是因為鏈表插入和刪除時不需要移動元素就能實現。只在表的首、尾進行插入操作的線性表用尾指針表示的單循環鏈表最適宜,減少了移動指針的次數。因此,本題參考答案是C。
13.100個元素的排序數組分別進行二分查找和順序查找,在查找失敗的情況下,的比較次數較多。
A. 二分查找
B. 順序查找
C. 一樣多
D. 不一定
數據結構復習題解析解析:本題考點是二分查找的性能。
100個元素的排序數組分別進行二分查找和順序查找,在查找失敗的情況下,順序查找最多比較100次,二分查找最多比較7次。因此,本題參考答案是B。
14.有6個元素6,5,4,3,2,1的順序進棧,問下列哪一個不是合法的出棧序列
A. 5,4,3,6,1,2
B. 4,5,3,1,2,6
C. 3,4,6,5,2,1
D. 2,3,4,1,5,6
數據結構復習題解析解析:本題考點是棧的應用。
棧是一種后進先出的數據結構,5在6之后進棧,肯定要在6之前出棧。因此,本題參考答案是C。
15.會引起循環隊列隊頭位置發生變化的操作是__。
A. 出隊列
B. 入隊列
C. 取隊首元素
D. 取隊尾元素
數據結構復習題解析解析:本題考點是循環隊列的基本操作。
循環隊列的出隊列操作是在隊頭進行的,會使隊頭位置發生變化。因此,本題參考答案是A。
16. 鏈表的結點類型定義如下:
typedef struct node link;
struct node
{
ListItem element;
link left;
link right;
}p,q,r;
刪除雙鏈表中結點p(由p指向的結點)的操作是______
A. q=p->left;r=p->right;q->right=r;r->left=q;
B. q=p->right;r=p->left;q->right=r;r->left=q;
C. q=p->left;r=p->right;q->left=r;r->right=q;
D. q=p->left;r=p->right;q->right=r->left;
數據結構復習題解析解析:本題考點是鏈表的操作。
根據鏈表結點類型的定義可以看出,該鏈表是一個雙向鏈表。刪除雙鏈表中結點p(由p指向的結點)的操作是: q=p->left; r=p->right; q->right=r; r->left=q; 因此,本題參考答案是A。
17.在下列排序算法中,時間復雜度為O(nlogn)的是____
A. 冒泡排序
B. 簡單選擇排序
C. 直接插入排序
D. 堆排序
數據結構復習題解析解析:本題考點是堆排序的時間復雜度。
在上述算法中,堆排序的時間復雜度是O(nlogn),其他算法的時間復雜度都是O(n2)。因此,本題參考答案是D。
18.在一棵三元樹中度為3的結點數為2個,度為2的結點數為1個,度為1的結點數為2個,則度為0的結點數為____個。
A. 4
B. 5
C. 6
D. 7
數據結構復習題解析解析:本題考點是三元樹中結點數的計算。
樹中結點數等于所有結點度數的和加1。所以:2+1+2+X=23+12+21+X0+1,所以X=6。因此,本題參考答案是C。
19.具有10個葉結點的二叉樹中有____個度為2的結點.
A. 8
B. 9
C. 10
D. 11
數據結構復習題解析解析:本題考點是二叉樹的性質。
葉子結點個數=度為2的結點個數+1。因此,本題參考答案是B。
20.在一個圖中,所有頂點的度數之和等于所有邊的____倍。
A. 1/2
B. 1
C. 2
D. 4
數據結構復習題解析解析:本題考點是圖的基本性質。
在一個圖中,所有頂點的度數之和等于所有邊的2倍,這是因為一條邊一定是連接兩個頂點。因此,本題參考答案是C。
21.下列數據結構具有記憶功能的是____
A. 隊列
B. 循環隊列
C. 棧
D. 順序表
數據結構復習題解析解析:本題考點是具有記憶功能的數據結構。
由棧的定義可知,棧是一種后進先出的線性表,所以棧具有記憶功能。因此,本題參考答案是C。
22.下列數據結構中,按先進后出原則組織數據的是____
A. 線性鏈表
B. 棧
C. 循環鏈表
D. 順序表
數據結構復習題解析解析:本題考點是棧的定義。
棧是一種后進先出(先進后出)的線性表。因此,本題參考答案是B。
23.下列關于棧的敘述中正確的是____
A. 在棧中只能插入數據
B. 在棧中只能刪除數
C. 棧是先進先出的線性表
D. 棧是先進后出的線性表
數據結構復習題解析解析:本題考點是棧的定義。
棧是一種后進先出(先進后出)的線性表,可以進行插入和刪除數據。因此,本題參考答案是D。
24.下列關于隊列的敘述中正確的是____
A. 在隊列中只能插入數據
B. 在隊列中只能刪除數據
C. 隊列是先進先出的線性表
D. 隊列是先進后出的線性表
數據結構復習題解析解析:本題考點是隊列的定義。
隊列是一種先進先出的線性表,可以進行插入和刪除數據。因此,本題參考答案是C。
25.下列敘述中,正確的是____
A. 線性鏈表中的各元素在存儲空間中的位置必須是連續的
B. 線性鏈表中的表頭元素一定存儲在其他元素的前面
C. 線性鏈表中的各元素在存儲空間中的位置不一定是連續的,但表頭元素一定存儲在其他元素的前面
D. 線性鏈表中的各元素在存儲空間中的位置不一定是連續的,且各元素的存儲順序也是任意的
數據結構復習題解析解析:本題考點是線性鏈表的特點。
線性鏈表中的各元素在存儲空間中的位置不一定是連續的,且各元素的存儲順序也是任意的。因此,本題參考答案是D。
26.下列敘述中正確的是____
A. 線性表是線性結構
B. 棧與隊列是非線性結構
C. 線性鏈表是非線性結構
D. 二叉樹是線性結構
數據結構復習題解析解析:本題考點是線性表的性質。
線性表是一種線性結構。棧、隊列和線性鏈表都是線性結構。二叉樹是一種非線性結構。因此,本題參考答案是A。
27.線性表L=(a1,a2,a3,……ai,……an),下列說法正確的是____
A. 每個元素都有一個直接前件和直接后件
B. 線性表中至少要有一個元素
C. 表中諸元素的排列順序必須是由小到大或由大到小
D. 除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件
數據結構復習題解析解析:本題考點是線性表的性質。
線性表的特點是:除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件。因此,本題參考答案是D。
28.鏈表不具有的特點是____
A. 不必事先估計存儲空間
B. 可隨機訪問任一元素
C. 插入刪除不需要移動元素
D. 所需空間與線性表長度成正比
數據結構復習題解析解析:本題考點是鏈表的特點。
可隨機訪問任一元素是順序表(例如數組)的特點,不是鏈表的特點。因此,本題參考答案是B。
29.在____中,只要指出表中任何一個結點的位置,就可以從它出發依次訪問到表中其他所有結點。
A. 線性單鏈表
B. 雙向鏈表
C. 線性鏈表
D. 循環鏈表
數據結構復習題解析解析:本題考點是循環鏈表的特點。
循環鏈表最大的特點是只要指出表中任何一個結點的位置,就可以從它出發依次訪問到表中其他所有結點。因此,本題參考答案是D。
30.以下數據結構屬于非線性數據結構的是____
A. 隊列
B. 線性表
C. 二叉樹
D. 棧
數據結構復習題解析解析:本題考點是非線性數據結構的特點。
二叉樹屬于非線性結構,其他選項都屬于線性結構。因此,本題參考答案是C。
31.線性表( a1,a2,…,an)以鏈接方式存儲時,訪問第i位置元素的時間復雜性為____
A. O(i)
B. O(1)
C. O(n)
D. O(i-1)
數據結構復習題解析解析:本題考點是單鏈表的基本操作。
線性表(a1,a2,…,an)以鏈接方式存儲時,該線性表就是一個單鏈表。單鏈表訪問第i位置元素的時間復雜性為O(n),因為需要從首元素開始逐個向后訪問。因此,本題參考答案是C。
32.在雙向鏈表指針p的結點前插入一個指針q的結點操作是____。
A. p->Llink=q;q->Rlink=p;p->Llink->Rlink=q;q->Llink=q;
B. p->Llink=q;p->Llink->Rlink=q;q->Rlink=p;q->Llink=p->Llink;
C. q->Rlink=p;q->Llink=p->Llink;p->Llink->Rlink=q;p->Llink=q;
D. q->Llink=p->Llink;q->Rlink=q;p->Llink=q;p->Llink=q;
數據結構復習題解析解析:本題考點是雙向鏈表的插入操作。
在雙向鏈表指針p的結點前插入一個指針q的結點操作是: q->Rlink=p; q->Llink=p->Llink; p->Llink->Rlink=q; p->Llink=q; 因此,本題參考答案是C。
33.在單鏈表指針為p的結點之后插入指針為s的結點,正確的操作是:。
A. p->next=s;s->next=p->next;
B. s->next=p->next;p->next=s;
C. p->next=s;p->next=s->next;
D. p->next=s->next;p->next=s;
數據結構復習題解析解析:本題考點是單鏈表的基本操作。
在單鏈表指針為p的結點之后插入指針為s的結點的操作是: s->next=p->next; p->next=s; 因此,本題參考答案是B。
34.對于一個頭指針為head的帶頭結點的單鏈表,判定該表為空表的條件是
A. headNULL
B. head→nextNULL
C. head→next==head
D. head!=NULL
數據結構復習題解析解析:本題考點是單鏈表的基本操作。
由于單鏈表帶有頭結點,因此從頭結點的下一個結點開始存儲元素,所以判定該表為空表的條件是看頭結點的下一個結點是否為空。因此,本題參考答案是B。
35.對于順序存儲的線性表,訪問結點和增加、刪除結點的時間復雜度為____。
A. O(n) O(n)
B. O(n) O(1)
C. O(1) O(n)
D. O(1) O(1)
數據結構復習題解析解析:本題考點是線性表操作的性能分析。
對于順序存儲的線性表,例如數組,訪問結點時是隨機訪問方式,直接利用下標就可以定位要訪問哪個元素,時間復雜度為O(1)。增加、刪除結點時需要移動大量其他元素,時間復雜度為O(n)。因此,本題參考答案是C。
36.執行完下列語句段后,i值為:____
int f(int x)
{
return ((x>0) ? x f(x-1):2);
}
int i;
i =f(f(1));
A. 2
B. 4
C. 8
D. 無限遞歸
數據結構復習題解析解析:本題考點是遞歸的使用。
首先計算f(1)的值,當x=1時,函數返回值是x* f(x-1);即1f(0),而f(0)=2,因此,f(1)的值為2。再計算f(f(1))=f(2),當x=2時,函數返回值是2f(1)=2*2=4。因此,本題參考答案是B。
37.設計一個判別表達式中左,右括號是否配對出現的算法,采用____數據結構最佳。
A. 線性表的順序存儲結構
B. 隊列
C. 線性表的鏈式存儲結構
D. 棧
數據結構復習題解析解析:本題考點是棧的應用。
棧的一個重要應用就是判別表達式中括號是否匹配,基本思想是遇到左括號進棧,遇到右括號時不進棧,并彈出棧頂的左括號,如果最終無元素進棧,并且棧中也無左括號,則匹配成功。因此,本題參考答案是D。
38.用鏈接方式存儲的隊列,在進行刪除運算時____。
A. 僅修改頭指針
B. 僅修改尾指針
C. 頭、尾指針都要修改
D. 頭、尾指針可能都要修改
數據結構復習題解析解析:本題考點是隊列的基本操作。
鏈接方式存儲的隊列,一般都是在隊頭進行刪除運算,頭指針需要修改,但當刪除隊列中最后一個元素時,頭、尾指針都需要修改。因此,本題參考答案是D。
39.關二叉樹下列說法正確的是____
A. 二叉樹的度為2
B. 一棵二叉樹的度可以小于2
C. 二叉樹中至少有一個結點的度為2
D. 二叉樹中任何一個結點的度都為2
數據結構復習題解析解析:本題考點是二叉樹的基本性質。
當一個二叉樹為空樹時,此時,它的度小于2。因此,本題參考答案是B。
40.對于有n 個結點的二叉樹, 其高度為____
A. nlog2n
B. log2n
C. log2n+1
D. 不確定
數據結構復習題解析解析:本題考點是二叉樹高度的計算方法。
對于有n個結點的二叉樹,其高度是不確定的,與結點的排列方式有關,最大為n(每個節點就只有一棵子樹的時候),最小是完全二叉樹的時候,當然也有其他情況可以滿足,最小為log2n,其他情況的都是在這兩種之間,不大于最大不小于最小。因此,本題參考答案是D。
二、填空題
1、二叉樹的遍歷方式有_______、和
數據結構復習題解析解析:本題考點是二叉樹遍歷方式的種類。
二叉樹的遍歷有三種方式,如下:
1)前序遍歷(DLR),首先訪問根結點,然后遍歷左子樹,最后遍歷右子樹。簡記根-左-右。
2)中序遍歷(LDR),首先遍歷左子樹,然后訪問根結點,最后遍歷右子樹。簡記左-根-右。
3)后序遍歷(LRD),首先遍歷左子樹,然后遍歷右子樹,最后訪問根結點。簡記左-右-根。
2、圖的遍歷方式有_______和_______
數據結構復習題解析解析:本題考點是圖的遍歷。
從圖中某一頂點出發,按某種搜索方法訪遍其余頂點,且使每一頂點僅被訪問一次。這一過程稱為圖的遍歷。遍歷圖的基本搜索方法有兩種:深度優先搜索DFS(Depth First Search)和廣度優先搜索BFS(Broad First Search)。這兩種方法都適用于有向圖和無向圖。
3、可以作為算法所需存儲空間的度量。
數據結構復習題解析解析:本題考點是算法運行所需存儲空間的度量。
空間復雜度是對一個算法在運行過程中臨時占用存儲空間大小的量度,記做(n)=O(f(n))。
4、某二叉樹的前序和后序正好相反,則該二叉樹一定是__________二叉樹。
數據結構復習題解析解析:本題考點是二叉樹的特性。
由于二叉樹的前序序列是先訪問根結點再訪問左右子樹得到的,二叉樹的后序序列是先訪問左右子樹最后訪問根結點得到的,因此,高度等于其結點數的二叉樹的前序和后序正好相反。
5、棧的存儲方式有_______和_________兩種。
數據結構復習題解析解析:本題考點是棧的存儲方式。
棧既然是一種線性表,所以線性表的順序存儲和鏈式存儲結構同樣適用于棧。
6、開放定址法中,增量序列的取法有、___________和_________三種。
數據結構復習題解析解析:本題考點是開放定址法中增量序列的取法。
開放定址法就是從發生沖突的那個單元開始,按照一定的次序,從散列表中查找出一個空閑的存儲單元,把發生沖突的待插入元素存入到該單元中的一類處理沖突的方法。增量序列的取法主要有線性探測再散列,二次探測再散列,偽隨機數序列三種。
三、解答題
1、設長度為n的鏈隊列用單循環鏈表表示,若只設頭指針,則入隊,出隊操作的時間是什么?如果只設尾指針呢?
數據結構復習題解析解析:本題考點是單鏈表的基本操作。
隊列的特點是:先進先出;
單鏈的特點是:迭代的時候只能向前,不能回頭;
在只知道頭指針的情況下:
入隊:首先要遍歷單鏈,找到尾指針,時間復雜度O(n);
出隊:直接訪問頭指針即可,時間復雜度O(1);
只知道尾指針的情況下,出入隊時間均為O(1),因為是循環鏈表,尾指針所指的下一個元素就是頭指針所指元素,所以出隊時不需要遍歷整個隊列。
2、無向圖G有6個結點和9條邊,并依次輸入這9條邊為(0,1),(0,2),(0,4),(0,5),(1,2),(2,3),(2,4),(3,4),(4,5),試從頂點0出發,分別寫出按深度優先搜索法和廣度優先搜索法進行遍歷的結點序列。
數據結構復習題解析解析:本題考點是無向圖的遍歷方法。
回答此題前,應首先根據9條邊畫出該無向圖,然后根據無向圖深度優先和廣度優先搜索法的定義進行遍歷,得到結點序列。 深度優先搜索法:0–>2–>3–>4–>5–>1 廣度優先搜索法:0–>1–>2–>4–>5–>3
3、簡單描述棧的特點。
數據結構復習題解析解析:本題考點是棧的基本特性。
后進先出是棧的最主要特點。
四、算法題
1、設棧S=(1,2,3,4,5,6,7) ,其中7為棧頂元素。
1)簡述函數f31中第一個循環語句的功能;
2)寫出調用f31(&s)后的s。
數據結構復習題解析解析:本題考點是棧的基本操作。
!就是邏輯非,當i=0,!i就是1,當i!=0,!i就是0了,i=!i就是給i賦值了(i=!i)!=0)的意思就很明顯了,當i=0,i=!i代表的就是1,當i!=0,那么表達式if((i=!i)!=0)為真成立的條件就是i=0。函數f31中第一個循環語句的功能是將棧S中的元素依次出棧,同時將第奇數次出棧的元素入棧T,第偶數次出棧的元素入隊列Q。調用f31(&s)后,s = (1,3,5,7,6,4,2),其中2為棧頂元素;
總結
以上是生活随笔為你收集整理的数据结构习题及解析三的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的encode()和deco
- 下一篇: 优达笔记-安然数据分析 异常值处理