算法與數據結構試題及答案
算法與數據結構詳細介紹了常用數據結構和算法的基本概念及其不同的實現方法,對各種數據結構,討論了在不同存儲結構上實現線性和非線性結構的不同運算,并對算法設計的方法和技巧進行了介紹。以下是由陽光網小編整理關于算法與數據結構試題的內容,希望大家喜歡!
算法與數據結構試題及答案(一)
算法分析題 (每小題6分,共18分)
1.設字符串類String具有下列操作:
int Length()const; //計算字符串的長度
chargetData(k); //提取字符串第k個字符的值
若字符串Tar的值為“ababcabcacbab“,的值為‘abcac”時,
(1)給出下面算法執行后返回的結果,
(2)給出下面。算法的功能。
include "String, h"
int unknown(String& Tar, strlng& Pat) coast
{
for (int i<O; i<=Tar. LengthO-Pat. Length(); i++) {
iht j=O;
while (j<Pat. Length())
if (Tar. getOata(i+j) ==Pat. getData(j)) j+ +
else break;
if (j==Pat. Length()) return i;
return –1;
}
返回結果:
算法功能:
2。已知二叉樹中的結點類型BinTrceNode定義為:
struct BinTreeNode {ElemType data; BinTreeNode * left, * right; }
其中data為結點值域,left和right分別為指向左、右子女結點的指針域.下面函數的功能是返回二又樹BT中值為X的結點所在的層號.根據題意按標號把合適的內容填寫到算法后面相應標號的位置.
int NodeLevel(BinTreeNode * BT, ElemType X)
if (BT==NULL) return -- 1; //空樹的`層號為一1
else if (BT->data==X) return 0; //根結點的層號為o
//向于樹中查找X結點
else {
im cl =NodeLevel(BT->left, X);
if (cl>=0) (1)
iht e2= (2) ;
if ( (3) ) return c2+1;
//若樹中不存在K結點則 返回一l
else return -1
}
}
(1)
(2)
(3)
3.假定一個有向無權圖采用鄰接矩陣存儲,請指出F面算法的功能。
Template<class Type>
void Graph<Type>::unknown(int i)
{
int d,j;
d=0;
for (j=0; j<CurremNodes; j++){ //CurremNodes為田中的頂點效
if (Edge[i][j]) {d++ ; Edge[i][j]=0; }
if (Edge[j][i]) {d+ +; Edge[j][i]=0; }
}
CurrentEdges-=d; //CurremEdges //為圖中的邊數
}
算法功能:
答案
算法分析題(每小題6分,共18分)
1
返回結果,5
算法功能:字符串的模式匹配算法.
2.
(1)returncl+l
(2)NodeLevel(BT一>,right,X)
(3)<c2>=0)
3,從有向無權圖中刪除所有與頂點i相連的邊,包括出邊和人邊。
算法與數據結構試題及答案(二)
一、單選題(每題 2 分,共20分)
1. 棧和隊列的共同特點是( )。
A.只允許在端點處插入和刪除元素
B.都是先進后出
C.都是先進先出
D.沒有共同點
2. 用鏈接方式存儲的隊列,在進行插入運算時( ).
A. 僅修改頭指針 B. 頭、尾指針都要修改
C. 僅修改尾指針 D.頭、尾指針可能都要修改
3. 以下數據結構中哪一個是非線性結構( )
A. 隊列 B. 棧 C. 線性表 D. 二叉樹
4. 設有一個二維數組A[m][n],假設A[0][0]存放位置在644(10),A[2][2]存放位置在
676(10),每個元素占一個空間,問A[3][3](10)存放在什么位置腳注(10)表示用10進制表示。
A.688 B.678 C.692 D.696
5. 樹最適合用來表示( )。
A.有序數據元素 B.無序數據元素
C.元素之間具有分支層次關系的數據 D.元素之間無聯系的數據
6. 二叉樹的第k層的結點數最多為( ).
kk-1 A.2-1 B.2K+1 C.2K-1 D. 2
7. 若有18個元素的有序表存放在一維數組A[19]中,第一個元素放A[1]中,現進行二
分查找,則查找A〔3〕的比較序列的下標依次為( )
A. 1,2,3 B. 9,5,2,3
C. 9,5,3 D. 9,4,2,3
8. 對n個記錄的文件進行快速排序,所需要的輔助存儲空間大致為
A. O(1) B. O(n) C. O(1og2n) D. O(n2)
9. 對于線性表(7,34,55,25,64,46,20,10)進行散列存儲時,若選用H(K)
=K %9作為散列函數,則散列地址為1的元素有( )個,
A.1 B.2 C.3 D.4
10. 設有6個結點的無向圖,該圖至少應有( )條邊才能確保是一個連通圖。
A.5 B.6 C.7 D.8
二、填空題(每空1分,共26分)
1. 通常從四個方面評價算法的質量:_________、_________、_________和_________。
2. 一個算法的時間復雜度為(n3+n2log2n+14n)/n2,其數量級表示為________。
3. 假定一棵樹的廣義表表示為A(C,D(E,F,G),H(I,J)),則樹中所含的結點數
為__________個,樹的深度為___________,樹的度為_________。
4. 后綴算式9 2 3 +- 10 2 / -的值為__________。中綴算式(3+4X)-2Y/3對應的后綴算式
為_______________________________。
5. 若用鏈表存儲一棵二叉樹時,每個結點除數據域外,還有指向左孩子和右孩子的兩個指
針。在這種存儲結構中,n個結點的二叉樹共有________個指針域,其中有________個指針域是存放了地址,有________________個指針是空指針。
6. 對于一個具有n個頂點和e條邊的有向圖和無向圖,在其對應的鄰接表中,所含邊結點
分別有_______個和________個。
7. AOV網是一種___________________的圖。
8. 在一個具有n個頂點的無向完全圖中,包含有________條邊,在一個具有n個頂點的有
向完全圖中,包含有________條邊。
9. 假定一個線性表為(12,23,74,55,63,40),若按Key % 4條件進行劃分,使得同一余數的元
素成為一個子表,則得到的四個子表分別為____________________________、___________________、_______________________和__________________________。
10. 向一棵B_樹插入元素的過程中,若最終引起樹根結點的分裂,則新樹比原樹的高度
___________。
11. 在堆排序的過程中,對任一分支結點進行篩運算的時間復雜度為________,整個堆排序
過程的時間復雜度為________。
12. 在快速排序、堆排序、歸并排序中,_________排序是穩定的。
三、計算題(每題 6 分,共24分)
1. 在如下數組A中鏈接存儲了一個線性表,表頭指針為A [0].next,試寫出該線性表。
data next 2.
3. 已知一個圖的頂點集V和邊集E分別為:V={1,2,3,4,5,6,7};
E={(1,2)3,(1,3)5,(1,4)8,(2,5)10,(2,3)6,(3,4)15,
(3,5)12,(3,6)9,(4,6)4,(4,7)20,(5,6)18,(6,7)25};
用克魯斯卡爾算法得到最小生成樹,試寫出在最小生成樹中依次得到的各條邊。
4. 畫出向小根堆中加入數據4, 2, 5, 8, 3時,每加入一個數據后堆的變化。
數據結構試卷(一)參考答案
一、選擇題(每題2分,共20分)
1.A 2.D 3.D 4.C 5.C 6.D 7.D 8.C 9.D 10.A
二、填空題(每空1分,共26分)
1. 正確性 易讀性 強壯性 高效率
2. O(n)
3. 9 3 3
4. -1 3 4 X * + 2 Y * 3 / -
5. 2n n-1 n+1
6. e 2e
7. 有向無回路
8. n(n-1)/2 n(n-1)
9. (12,40) ( ) (74) (23,55,63)
10.增加1
11.O(log2n) O(nlog2n)
12.歸并
三、計算題(每題6分,共24分)
1. 線性表為:(78,50,40,60,34,90)
0111
02. 鄰接矩陣:11100101101101011110
鄰接表如圖11所示:
圖11
3. 用克魯斯卡爾算法得到的最小生成樹為:
(1,2)3, (4,6)4, (1,3)5, (1,4)8, (2,5)10, (4,7)20
4. 見圖12
26
【算法與數據結構試題及答案】相關文章: