複習 算法
1、選擇題 數組
1.計算機算法指的是 。 安全
A.計算方法 B. 排序方法 C. 解決問題的步驟序列 D. 調度方法 數據結構
2. 下面關於算法說法正確的是( ) spa
A.算法最終必須由計算機程序實現 指針
B. 爲解決某問題的算法同爲該問題編寫的程序含義是相同的 排序
C. 算法的可行性是指指令不能有二義性 D. 以上幾個都是錯誤的 遞歸
3.從邏輯上能夠把數據結構分爲( )兩大類。 隊列
A.動態結構、靜態結構 B.順序結構、鏈式結構 字符串
C.線性結構、非線性結構 D.初等結構、構造型結構
4.下面程序段中帶下劃線的語句的執行次數的數量級是( )。
i=1;
while(i<n)
{
for(j=1;j<=n;j++)
x=x+1 ;
i=i*2;
}
A. O(2n) B.O(n) C.O(n2) D.O(nlog2n)
5.如下數據結構中,( A )是非線性數據結構
A.樹 B.字符串 C.隊 D.棧
6. 算法分析的兩個主要方面是(D)
A. 數據複雜性和程序複雜性 B. 正確性和簡明性
C. 可讀性和健壯性 D.空間複雜度和時間複雜度
7.下面關於線性表的敘述中,錯誤的是哪個?( B )
A.線性表採用順序存儲,必須佔用一片連續的存儲單元。
B.線性表採用順序存儲,便於進行插入和刪除操做。
C.線性表採用連接存儲,沒必要佔用一片連續的存儲單元。
D.線性表採用連接存儲,便於插入和刪除操做。
8.若某線性表最經常使用的操做是存取任一指定序號的元素和在最後進行插入和刪除運算,則利用( A )存儲方式最節省時間。
A.順序表 B.雙鏈表 C.帶頭結點的雙循環鏈表 D.單循環鏈表
9.某線性表中最經常使用的操做是在最後一個元素以後插入一個元素和刪除第一個元素,則採用( D )存儲方式最節省運算時間。
A.單鏈表 B.僅有頭指針的單循環鏈表 C.雙鏈表 D.僅有尾指針的單循環鏈表
10. 對於順序存儲的線性表,訪問結點和增長、刪除結點的時間複雜度爲( C )。
A.O(n) O(n) B. O(n) O(1) C. O(1) O(n) D. O(1) O(1)
11.非空的循環單鏈表head的尾結點p知足( A )。
A.p.next = head B.p.next = null C.p = NULL D.p= head
12.完成在雙循環鏈表結點p以後插入s的操做是( ? ).
A. p.next = s; s.prior = p; p.next.prev = s ; s.next = p.next;
B. p.next. prev = s; p.next = s; s. prev = p; s.next = p.next;
C. s.prev = p; s.next = p.next; p.next = s; p.next.prior = s ;
D. s.prev = p; s.next = p.next; p.next.prev = s ; p.next = s;
13.對於一個頭指針爲head的帶頭結點的單鏈表,斷定該表爲空表的條件是(B )
A.head == null B.head.next == null C.head.next == head D.head != null
14. 一個棧的輸入序列爲123…n,若輸出序列的第一個元素是n,輸出第i(1<=i<=n)個元素是( A )。
A. 不肯定 B. n-i+1 C. i D. n-i
15. 有六個元素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
16. 一個遞歸算法必須包括( B )。
A. 遞歸部分 B. 終止條件和遞歸部分 C. 迭代部分 D.終止條件和迭代部分
17. 表達式a*(b+c)-d的後綴表達式是( B )。
A.abcd*+- B. abc+*d- C. abc*+d- D. -+*abcd
18. 用連接方式存儲的隊列,在進行刪除運算時( D )。
A. 僅修改頭指針 B. 僅修改尾指針 C. 頭、尾指針都要修改 D. 頭、尾指針可能都要修改
19. 循環隊列A[M]存放其元素值,用front和rear分別表示隊頭和隊尾,則當前隊列中的元素數是( A )。
A. (rear-front+m)%M B. front-rear
C. rear-front D. (front-rear+m)%M
20. 最大容量爲n的循環隊列,隊尾指針是rear,隊頭是front,則隊空的條件是 ( B )。
A. (rear+1) %n= front B. rear = front
C.rear+1 = front D. (rear-l) %n= front
21. 棧和隊都是( C )
A.順序存儲的線性結構 B. 鏈式存儲的非線性結構
C. 限制存取點的線性結構 D. 限制存取點的非線性結構
22.串的長度是指( B )
A.串中所含不一樣字母的個數 B.串中所含字符的個數
C.串中所含不一樣字符的個數 D.串中所含非空格字符的個數
23. 算法必須具有輸入、輸出和 B 等五個特性
A.可執行性、可移植性、可擴充性 B. 可行性、肯定性、有窮性
C. 肯定性、有窮性、穩定性 D. 易讀性、穩定性、安全性
24.設有一個10階的對稱矩陣A,採用壓縮存儲方式其下三角(含主對角元)元素,第一個元素爲a11 ,其存儲地址爲1,每一個元素佔一個地址空間,則a85的地址爲( B )。
A. 13 B. 33 C. 18 D. 40
25. 假設以行序爲主序存儲二維數組A[100][100],設每一個數據元素佔2個存儲單元,基地址爲10,則A[5][5]的地址爲(D )。
A. 808 B. 818 C. 1010 D. 1020
27. 有一個100*90的稀疏矩陣,非0元素有10個,設每一個整型數佔2字節,則用三元組表
示該矩陣時,所需的字節數是( B )。
A. 60 B. 66 C. 18000 D. 33
28. 對稀疏矩陣進行壓縮存儲目的是( C )。
A.便於進行矩陣運算 B.便於輸入和輸出
C.節省存儲空間 D.下降運算的時間複雜度
30. 在下述結論中,正確的是( D )
①只有一個結點的二叉樹的度爲0; ②二叉樹的度爲2; ③二叉樹的左右子樹可任意交換; ④深度爲K的徹底二叉樹的結點個數小於或等於深度相同的滿二叉樹。
A.①②③ B.②③④ C.②④ D.①④
31.若一棵二叉樹具備10個度爲2的結點,5個度爲1的結點,則度爲0的結點個數是( B )
A.9 B.11 C.15 D.不肯定
18. 一個具備1025個結點的二叉樹的高h爲( C )
A.11 B.10 C.11至1025之間 D.10至1024之間
33.已知一棵二叉樹的前序遍歷結果爲ABCDEF,中序遍歷結果爲CBAEDF,則後序遍歷的結果爲( )。
A.CBEFDA B. FEDCBA C. CBEDFA D.不定
34.下面的說法中正確的是( ).
(1)任何一棵二叉樹的葉子結點在三種遍歷中的相對次序不變;
(2)按二叉樹定義,具備三個結點的二叉樹共有6種。
A.(1)(2) B.(1) C.(2) D.(1)、(2)都錯
35.某二叉樹的前序序列和後序序列正好相反,則該二叉樹必定是(D)的二叉樹。
A.空或只有一個結點 B.任一結點無左子樹 C.高度等於其結點數 D.任一結點無右子樹
36.一棵二叉樹高度爲h,全部結點的度或爲0,或爲2,則這棵二叉樹最少有( B )結點
A.2h B.2h-1 C.2h+1 D.h+1
2、判斷題
1. 數據的邏輯結構是指數據的各數據項之間的邏輯關係。( X )
2. 數據項是數據不可分割的最小單位。( )
3.數據的物理結構是指數據在計算機內的實際存儲形式。( )
4. 數據結構的抽象數據類型的定義與具體實現有關。( )
5.順序存儲方式插入和刪除時效率過低,所以它不如鏈式存儲方式好。( )
6. 鏈表是採用鏈式存儲結構的線性表,進行插入、刪除操做時,在鏈表中比在順序存儲結構中效率高。 ( )
8.兩個字符串相等的充分必要條件是兩串的長度相等且兩串中對應位置的字符也相等。( )
9. 廣義表的取表尾運算,其結果一般是個表,但有時也但是個單元素值。( )
10.矩陣壓縮存儲後,必會失去隨機存取功能。( )
11. 一個稀疏矩陣Am×n採用三元組形式表示, 若把三元組中有關行下標與列下標的值互換,並把m和n的值互換,則就完成了Am×n的轉置運算。( )
3、填空
1.數據的物理結構包括 數據元素 的表示和 關係 的表示。
2. 對於給定的n個元素,能夠構造出的邏輯結構有 隊列 , 棧 , 線性表 ,__樹_四種。
3.已知以下程序段
for(i=n; i>=1;i--)
{
x=x+1; {語句1}
for(j=n; j>=i; j--)
y=y+1; {語句2}
}
語句1執行的頻度爲 ;語句2執行的頻度爲 (8).
4. (9) zhan _是限定僅在表尾進行插入或刪除操做的線性表。
5.在做進棧運算時應先判別棧是否_(10)_;在做退棧運算時應先判別棧是否_(11)_;當棧中元素爲n個,做進棧運算時發生上溢,則說明該棧的最大容量爲_(12)_。
6. 循環隊列的引入,目的是爲了克服__(13)。
7.用下標0開始的N元數組實現循環隊列時,爲實現下標變量M加1後在數組有效下標範圍內循環,可採用的表達式M= __(14)_____
8.空格串是指由空格字符所組成的字符串,其長度等於___(15)__。
9.設T和P是兩個給定的串,在T中尋找等於P的子串的過程稱爲_(16)_,又稱P爲_(17)_。
10.中綴式a+b*3+4*(c-d)對應的前綴式爲__(18)_,若a=1,b=2,c=3,d=4,則後綴式db/cc*a-b*+的運算結果爲_(19)__。
11.深度爲k的徹底二叉樹至少有___(20)_個結點,至多有___(2) ____個結點。
13.徹底二叉樹中,結點個數爲n,則編號最大的分支結點的編號爲___。
4、.程序題
一、假設有一棵二叉樹BinTree,(定義以下),試編寫程序judge判斷它是否爲一顆徹底二叉樹。
class Node{
Object data;
Node left, right, parent;
}
class BinTree{
Node root;
public boolean judge()
{
// 完善此處程序,注意此類中沒有任何其餘方法定義
}
}
2. 寫出具備頭指針的單鏈表List進行原地元素反序的代碼。(所謂原地,是指不得建立其餘輔助結構)
class Node{
Object data;
Node next;
}
Class List{
Node root;
public void reverse()
{
// 完善此代碼
}
}
問答題
談談你所理解的數據結構的做用。