資料結構緒論和演算法習題
第一章 緒論和演算法
一、選擇題
1、研究資料結構就是研究( D )。
A. 資料的邏輯結構 B. 資料的儲存結構
C. 資料的邏輯結構和儲存結構 D. 資料的邏輯結構、儲存結構及其基本操作
(研究非數值計算的程式設計問題中,計算機操作物件以及他們之間的關係和操作)
2、演算法分析的兩個主要方面是( A )。
A. 空間複雜度和時間複雜度 B. 正確性和簡單性
C. 可讀性和文件性 D. 資料複雜性和程式複雜性
3、具有線性結構的資料結構是( D )。(線性結構就是:在非空有限集合中,存在為一個被稱為第一個的資料元素和最後一個元素,有除了第一個元素,集合中每一個元素均只有一個前驅,除了最後一個元素有唯一後繼)(連結串列、棧、佇列、陣列、串)
A. 圖 B. 樹 C. 廣義表(線性表的推廣) D. 棧
4、計算機中的演算法指的是解決某一個問題的有限運算序列,它必須具備輸入、輸出、( B )等5個特性。
A. 可執行性、可移植性和可擴充性 B. 可執行性、有窮性和確定性
C. 確定性、有窮性和穩定性 D. 易讀性、穩定性和確定性
5、下面程式段的時間複雜度是( C )。
for(i=0;i<m;i++)
for(j=0;j<n;j++)
a[i][j]=i*j;
A. O(m2) B. O(n2) C. O(m*n) D. O(m+n)
6、演算法是( D )。為了解決某一問題而規定的一個有限長的操作序列
A. 計算機程式 B. 解決問題的計算方法 C. 排序演算法 D. 解決問題的有限運算序列
7、某演算法的語句執行頻度為(3n+nlog2n+n2+8),其時間複雜度表示( C )。
A. O(n) B. O(nlog2n) C. O(n2) D. O(log2n)
8、下面程式段的時間複雜度為( C )。
i=1;
while(i<=n)
i=i*3;
A. O(n) B. O(3n) C. O(log3n) D. O(n3)
9、資料結構是一門研究非數值計算的程式設計問題中計算機的資料元素以及它們之間的(B )和運算等的學科。(關係和操作)
A. 結構 B. 關係 C. 運算 D. 演算法
10、下面程式段的時間複雜度是( A )。
i=s=0;
while(s<n){
i++;s+=i;
}
A. O(n) B. O(n2) C. O(log2n) D. O(n3)
11、抽象資料型別的三個組成部分分別為( A)。
A. 資料物件、資料關係和基本操作 B. 資料元素、邏輯結構和儲存結構 C. 資料項、資料元素和資料型別 D. 資料元素、資料結構和資料型別
12、通常從正確性、易讀性、健壯性、高效性等4個方面評價演算法的質量,以下解釋錯誤的是( D)。
A. 正確性演算法應能正確地實現預定的功能
B. 易讀性演算法應易於閱讀和理解,以便除錯、修改和擴充
C. 健壯性當環境發生變化時,演算法能適當地做出反應或進行處理,不會產生不需要的執行結果
D. 高效性即達到所需要的時間效能空間
13、下列程式段的時間複雜度為(B)。
x=n;y=0;
while(x>=(y+1)*(y+1))
y=y+1;
A. O(n) B. C. O(1) D. O(n2)
二、填空題
1、程式段“i=1;while(i<=n) i=i*2;”的時間複雜度為 log2n 。
2、資料結構的四種基本型別中, 樹形結構 的元素是一對多關係。
三、綜合題
1、將數量級O(1),O(N),O(N2),O(N3),O(NLOG2N),O(LOG2N),O(2N)按增長率由小到大排序。
答案: O(1) O(log2N) O(N) O(Nlog2N) O(N2) O(N3) O(2N)
影象越陡峭越複雜
一、填空題
1. 資料結構被形式地定義為(D, R),其中D是 資料元素 的有限集合,R是D上的 關係 有限集合。
2. 資料結構包括資料的邏輯結構、資料的儲存結構和資料的運算這三個方面的內容。
3. 資料結構按邏輯結構可分為兩大類,它們分別是線性結構和非線性結構。
4. 線性結構中元素之間存在一對一關係,樹形結構中元素之間存在一對多關係,圖形結構中元素之間存在多對多關係。
5. 線上性結構中,第一個結點沒有前驅結點,其餘每個結點有且只有 1個前驅結點;最後一個結點沒有後續結點,其餘每個結點有且只有1個後續結點。
6. 在樹形結構中,樹根結點沒有前驅結點,其餘每個結點有且只有1個前驅結點;葉子結點沒有後續結點,其餘每個結點的後續結點數可以任意多個。
7. 在圖形結構中,每個結點的前驅結點數和後續結點數可以任意多個。
8.資料的儲存結構可用四種基本的儲存方法表示,它們分別是順序、鏈式、索引、雜湊。
9. 資料的運算最常用的有5種,它們分別是插入、刪除、修改、查詢、排序。
10. 一個演算法的效率可分為時間效率和空間效率。
11. 任何一個C程式都由一個主函式和若干個被呼叫的其它函式組成。
二、單項選擇題
( B )1. 非線性結構是資料元素之間存在一種:
A)一對多關係 B)多對多關係 C)多對一關係 D)一對一關係
( C )2. 資料結構中,與所使用的計算機無關的是資料的 結構;
A) 儲存 B) 物理 C) 邏輯 D) 物理和儲存
( C )3. 演算法分析的目的是:
A) 找出資料結構的合理性 B) 研究演算法中的輸入和輸出的關係
C) 分析演算法的效率以求改進 D) 分析演算法的易懂性和文件性
( A )4. 演算法分析的兩個主要方面5是:
A) 空間複雜性和時間複雜性 B) 正確性和簡明性
C) 可讀性和文件性 D) 資料複雜性和程式複雜性
( C )5. 計算機演算法指的是:
A) 計算方法 B) 排序方法 C) 解決問題的有限運算序列 D) 排程方法
( B )6. 計算機演算法必須具備輸入、輸出和 等5個特性。
A) 可行性、可移植性和可擴充性 B) 可行性、確定性和有窮性
C) 確定性、有窮性和穩定性 D) 易讀性、穩定性和安全性
三、簡答題
1.資料結構和資料型別兩個概念之間有區別嗎?
答:簡單地說,資料結構定義了一組按某些關係結合在一起的陣列元素。資料型別不僅定義了一組帶結構的資料元素,而且還在其上定義了一組操作。
2. 簡述線性結構與非線性結構的不同點。
答:線性結構反映結點間的邏輯關係是一對一的,非線性結構反映結點間的邏輯關係是多對多的。
四、分析下面各程式段的時間複雜度
1. for (i=0; i<n; i++)
for (j=0; j<m; j++)
A[i][j]=0;
答案 :O(n*m)
2. s=0;
for (i=0; i<n; i++)
for(j=0; j<n; j++)
s+=B[i][j];
sum=s;
答案 :O(n*n)
3. x=0;
for(i=1; i<n; i++)
for (j=1; j<=n-i; j++)
x++;
答案 :O()
4. i=1;
while(i<=n)
i=i*3;
答案:
O(log3n)
五、設有資料邏輯結構S=(D,R),試按各小題所給條件畫出這些邏輯結構的圖示,並確定其是哪種邏輯結構。
1. D={d1,d2,d3,d4} R={(d1,d2),(d2,d3),(d3,d4) }線性表
R={(d1,d2),(d1,d3),(d3,d4),(d3,d6),(d6,d8),(d4,d5), (d6,d7),(d8,d9) }
樹
3.D={d1,d2,…,d9}
R={(d1,d3),(d1,d8),(d2,d3),(d2,d4),(d2,d5),(d3,d9), (d5,d6),(d8,d9),(d9,d7), (d4,d7), (d4,d6)}
有向圖