數據結構(C語言)第二版 第一章課後答案

數據結構(C語言)第二版 第一章課後答案

在這裏插入圖片描述
這本書,我以後也會用,所以趁着考完試做個整理,順便分享出來。電子資源發不出來,放評論區吧,有需要自取。

1. 簡述下列概念:數據、數據元素、數據項、數據對象、數據結構、邏輯結構、存儲結構、抽象數據類型。

數據是對客觀事物的符號表示。在計算機科學中是指所有能輸入到計算機中並被計算機程序處理的符號的總稱。
數據元素是數據的基本單位,在計算機程序中通常作爲一個整體進行考慮和處理。
數據對象是性質相同的數據元素的集合,是數據的一個子集。
數據結構是相互之間存在一種或多種特定關係的數據元素的集合。
存儲結構是數據結構在計算機中的表示。
數據類型是一個值的集合和定義在這個值集上的一組操作的總稱。
抽象數據類型是指一個數學模型以及定義在該模型上的一組操作。是對一般數據類型的擴展。

2. 試舉一個數據結構的例子, 敘述其邏輯結構和存儲結構兩個層次的含義及相互關係。

例如有一張學生基本信息表,包括學生的學號、姓名、性別、專業、學院等信息。每個學生基本信息記錄對應一個數據元素,學生記錄按順序號排列,形成了學生基本信息記錄的線性序列。對於整個表來說,只有一個開始結點(它的前面無記錄)和一個終端結點(它的後面無記錄),其他的結點則各有一個也只有一個直接前趨和直接後繼。
學生記錄之間的這種關係就確定了學生表的邏輯結構,即線性結構。 這些學生記錄在計算機中的存儲表示就是存儲結構。如果用連續的存儲單元(如用數組表示)來存放這些記錄,則稱爲順序存儲結構;如果存儲單元不連續,而是隨機存放各個記錄,然後用指針進行鏈接,則稱爲鏈式存儲結構。 即相同的邏輯結構,可以對應不同的存儲結構。

3. 簡述邏輯結構的四種基本關係並畫出它們的關係圖。

集合結構: 數據元素之間除了“屬於同一集合”的關係外,別無其他關係。(例如,確定一名學生是
否爲班級成員,只需將班級看做一個集合結構。)

線性結構: 數據元素之間存在一對一的關係。(例如,將學生信息數據按照其入學報到的時間先後順
序進行排列,將組成一個線性結構。)

樹結構: 數據元素之間存在一對多的關係。(例如,在班級的管理體系中,班長管理多個組長,每
位組長管理多名組員,從而構成樹形結構。)

圖結構或網狀結構: 數據元素之間存在多對多的關係。(例如,多位同學之間的朋友關係,任何兩位同學都可以是朋友,從而構成圖形結構或網狀結構。)
Alt

4. 存儲結構由哪兩種基本的存儲方法實現?

1)順序存儲結構
順序存儲結構是藉助元素在存儲器中的相對位置來表示數據元素之間的邏輯關係,通常藉助程序設計語言的數組類型來描述。
2)鏈式存儲結構
順序存儲結構要求所有的元素依次存放在一片連續的存儲空間中,而鏈式存儲結構,無需佔用一整塊存儲空間。但爲了表示結點之間的關係,需要給每個結點附加指針字段,用於存放後繼元素的存儲地址。所以鏈式存儲結構通常藉助於程序設計語言的指針類型來描述。

5. 選擇題

1.C 2.C 3.B 4.D 5.D 6.A

(1) 在數據結構中, 從邏輯上可以把數據結構分成(C )。
A. 動態結構和靜態結構 B. 緊湊結構和非緊湊結構
C. 線性結構和非線性結構 D. 內部結構和外部結構
Alt
(2)與數據元素本身的形式、內容、相對位置、個數無關的是數據的(C )。
A. 存儲結構 B. 存儲實現
C. 邏輯結構 D. 運算實現

存儲及運算都需考慮數據元素本身的形式、內容等。而邏輯結構中關心元素之間的邏輯關係,與數據元素本身無關。

(3)通常要求同一邏輯結構中的所有數據元素具有相同的特性, 這意味着( B)。
A. 數據具有同一特點
B. 不僅數據元素所包含的數據項的個數要相同, 而且對應數據項的類型要一致
C. 每個數據元素都一樣
D. 數據元素所包含的數據項的個數要相等

(4)以下說法正確的是( D)。
A. 數據元素是數據的最小單位
B. 數據項是數據的基本單位
C. 數據結構是帶有結構的各數據項的集合
D. 一些表面上很不相同的數據可以有相同的邏輯結構

數據元素是數據的基本單位
數據項是數據的最小單位
數據結構是帶有結構的各數據元素的集合

(5)算法的時間複雜度取決於(D )。
A. 問題的規模 B. 待處理數據的初態
C. 計算機的配置 D. A和B

算法的時間複雜度取決於:待處理數據的狀態、問題的規模

(6)以下數據結構中,( A)是非線性數據結構。
A. 樹 B.字符串
C. 隊列 D. 棧

如上圖中案例

6.試分析下面各程序段的時間複雜度

  1. O(1)
  2. O(m*n)
  3. O(n2)
  4. O(log3n)
  5. O(n2)
  6. O(log2n)

1)
x=90; y=100;
while(y>0)
if(x>100)
{x=x-10;y–;}
else x++;

答案:O(1)
程序的執行次數爲常數階

2)
for (i=0; i<n; i++)
for (j=0; j<m; j++)
a[i][j]=0;

O(mn)
語句a[i][j]=0;的執行次數爲m
n

3)
s=0;
for i=0; i<n; i++)
for(j=0; j<n; j++)
s+=B[i][j];
sum=s;

O(n2)
語句s+=B[i][j];的執行次數爲n2

4)
i=1;
while(i<=n)
i=i*3;

O(log3n)
語句i=i*3;的執行次數爲 log3n。

5)
x=0;
for(i=1; i<n; i++)
for (j=1; j<=n-i; j++)
x++;

O(n2)
語句x++;的執行次數爲n-1+n-2+……+1= n(n-1)/2

6)
x=n; //n>1
y=0;
while (x>=(y+1) * (y+1))
y++;

O(log2n)
語句y++;的執行次數爲 log2n。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章