1. 程式人生 > >資料結構期中試題猜測

資料結構期中試題猜測

第一章、緒論

1. 計算機所處理的資料一般具有某種關係,這是指(B )

A.資料與資料之間存在某種關係        

B.資料元素與資料元素之間存在某種關係

C.元素內資料項與資料項之間存在某種關係

D.資料檔案內記錄與記錄之間存在某種關係

解析:資料結構是指相互之間存在一定關係的資料元素的集合,資料元素是討論涉及資料結構時的最小單位,其內部的資料項一般不予考慮。資料項是資料不可分割的最小單位。

2.以下關於資料結構的說法中,錯誤的是(A )

A.資料結構相同,對應的儲存結構也相同       

B.資料結構涉及資料的邏輯結構、儲存結構和施加其上的操作共三個方面

C.資料結構操作的實現與儲存結構有關

D.定義邏輯結構時可以不考慮儲存結構

解析:資料結構在計算機中的表示(又稱映像)稱為資料的物理結構,又稱儲存結構。而資料結構的目的是為了在計算機中實現對邏輯結構的操作。所以,A錯

3 以下關於資料結構的說法正確的是(C)

A.資料結構的邏輯結構獨立於儲存結構

B.資料結構的儲存結構獨立於該資料結構的邏輯結構

C.資料結構的邏輯結構唯一地決定了該資料的儲存結構

D.資料結構僅由其邏輯結構和儲存結構決定

解析:AB、任何一個演算法的設計取決於選定的資料(邏輯)結構,而演算法的實現依賴於採用的儲存結構。所以邏輯結構和儲存結構時密切相關的兩個方面。

D、資料結構涉及資料的邏輯結構、儲存結構和施加其上的操作共三個方面

4 演算法的時間複雜度與( A )有關

A.問題規模                                        B.計算機硬體的執行速度

C.源程式的長度                                D.編譯後執行程式的質量

解析:演算法的時間複雜度取決於問題的規模和待處理資料的初態。

5 某演算法的時間複雜度為O(n2),表明該演算法(B )

A.問題規模是n2                                B.問題規模於n2成正比

C.執行時間等於n2                                   D.執行時間於n

2成正比

解析:演算法的時間複雜度取決於問題的規模和待處理資料的初態,並且,時間複雜度取變化最快項的數量級。

6設有以下三個函式:

fn=100n^3+n^2+1000   g(n)=25n^3+4000n^2     h(n)=n^2.01+1000nlog2n

     以下關係中錯誤的是( C )

A.       fn=o(g(n))                      B.g(n)=o(f(n))

C.          h(n)=o(n^2.01)                      D.hn=o(nlogxn)

解析:同上

第二章

1 下列關於線性表的敘述中,正確的是( A)

A.每個元素最多有一個直接前驅和一個直接後繼

B.每個元素最少有一個直接前驅和一個直接後繼

C.每個元素有且僅有一個直接前驅,有且僅有一個直接後繼

D.線性表中每個元素都是不可再分的資料元素,且資料型別必須相同

解析:頭元素沒有直接前驅、最後一個元素沒有直接後繼,資料元素其內含資料項

問題1:線性表的順序儲存表示是一維陣列麼?

解析:不是。陣列就是相同資料型別的元素按一定順序排列的集合,線性表中資料元素之間的關係是一對一的關係,即除了第一個和最後一個數據元素之外,其它資料元素都是首尾相接的。也就是說,陣列就是物理上儲存在一組聯絡的地址上。也稱為資料結構中的資料結構,線性表是資料結構中的邏輯結構。可以儲存在陣列上,也可以儲存在連結串列上。用陣列來儲存的線性表就是順序表。

問題2:想要以O(1)的時間複雜度存取第i個元素,線性表的儲存應採用順序表還是單鏈表?

解析:單鏈表(答案只能選它,但我覺得雙向連結串列更好一點)

2  以下關於順序表的說法中,正確的是( C)

A.順序表可以利用一維陣列表示,因此兩者在結構上是一致的,可以通用

B.在順序表中,邏輯上相鄰的元素在物理位置上不一定相鄰

C.順序表和一維陣列一樣,都可以按下標隨機訪問,順序表還可以從某一指定的元素開始,向前或向後逐個元素順序訪問

D.在順序表中,每個元素的資料型別還可以是順序表

解析:A,順序表和陣列在結構上不是一致的。B、在物理位置相鄰  D不可以

3 在長度為n的順序表的表尾插入一個新元素的漸近時間複雜度為(B )

A.O(n)                                   B.O(1)

C.O(n2)                                 D.O(log2n)

解析:順序表到達表尾可以通過偏移實現,故複雜度為1

4 資料結構反映了資料結構之間的結構關係,單鏈表是一種( D)

A.順序儲存線性表

B.非順序儲存非線性表

C.順序儲存非線性表

D.非順序儲存線性表

解析:單鏈表是線性表,但為非順序儲存

5 單鏈表又稱為線性連結串列,在單鏈表上實施插入和刪除操作時( B )

A.不需移動節點,不需改變節點指標

B.不需移動節點,只需改變節點指標

C.只需移動節點,不需改變節點指標

D.既需移動節點,又需改變節點指標

解析:無

6 在以下有關靜態連結串列的敘述中,錯誤的是(B )

  1. 靜態連結串列既有順序儲存的優點,又有連線儲存的優點。所以,它存取表中第i個元素的時間與i無關
  2. 靜態連結串列中可容納元素個數的最大數目在定義時就確定了,以後不能增加
  3. 靜態連結串列與動態連結串列對元素的插入、刪除操作類似,無需做元素移動

A.(1)(2)                                        B.(1)

C.(1) (2) (3)                                  D.(2)

解析:靜態連結串列需要預先分配一個較大的空間,但在做線性表的插入刪除操作時不需移動元素,只需要修改指標

7利用雙向連結串列作線性表的儲存結構的優點是( B )

A.便於進行插入和刪除操作

B.提高按關係查詢資料元素的速度

C.節省空間

D.便於銷燬結構釋放空間

解析:克服單鏈表單向性的缺點

第三章

1 棧的插入刪除操作在( A )進行

A.棧頂                                         B.棧底

C.任意位置                                 D.指定位置

2 用S表示進棧,X表示出棧,若元素的進棧順序是1234,為了得到出棧順序1342,相應的S和X的操作序列為(D  )

A.SXSXSSXX                            B.SSSXXSXX

C.SXSSXXSX                            D.SXSSXSXX

解析:要得到出棧順序,其操作為1進棧,1出棧,現在棧中為空。然後2進棧,3進棧,3出棧,現在棧中剩下2。然後4進棧,4出棧,2出棧

3 假設一個棧的輸入序列是1234,則不可能得到的輸出序列是(B )

A.1234                                         B.4123

C.4321                                         D.1342

解析:B項首先4出棧,在4出棧之前123已經進棧,並且順序唯一,所以,它的出棧順序也是唯一的4321。其餘選項和上題分析方法一樣

4  當利用大小為n的陣列順序儲存一個棧時,假定用top==n表示棧空,則向這個棧插入一個元素時,首先執行( B )語句修改top指標

A.top++                                        B.top--

C.top=0                                        D.top=n

解析:因為棧空的表示為top=n,所以棧滿為top=0;所以,這是一個空減棧,下一步執行top--操作

5 在實現順序棧的操作時,在進棧之前先判斷棧是否( B),在出棧之前先判斷棧是否(A ).

A.空                                             B.滿

C.上溢                                         D.下溢

6 設鏈棧中節點的結構為(data,link),且top是指向棧頂的指標。若想在鏈棧的棧頂插入一個由s所指的節點,則執行的操作是( B )

A.top->link=s;                              B.s->link= top->link;  top->link=s;

C.s->link= top; top =s;                 D.s->link= top;  top= top->link;

解析:做插入操作,要插入元素的下一個指向棧頂指標的下一個,棧頂的下一個指向要插入的元素。

7設一個迴圈佇列Q[maxSize]的隊頭指標為front,隊尾指標為rear,佇列的最大容量為maxSize,除此之外,該佇列再沒有其他資料成員,則該佇列的隊滿條件是( C  )

A.Q.front==Q.rear;                                           B.Q.front+Q.rear>=maxSize;

C.Q.front==(Q.rear+1)% maxSize;                  D.Q. rear ==(Q. front +1)% maxSize;

解析:根據迴圈佇列,當隊頭指標和隊尾指標指向一樣時,隊滿

8設一個迴圈佇列最大容量為maxSize, 隊頭指標為front,隊尾指標為rear。若有一個迴圈佇列Q,則佇列中的資料元素個數為( D)

A.Q.rear-Q.front;                                     B.Q.rear-Q.front+1;

C.(Q.rear-Q.front)% maxSize+1;            D.(Q.rear-Q.front+ maxSize)% maxSize;

9最適合用作鏈式佇列的連結串列是(B )

A.帶有隊頭指標和隊尾指標的迴圈單鏈表

B.帶有隊頭指標和隊尾指標的非迴圈單鏈表

C.只帶隊頭指標的迴圈單鏈表

D.只帶隊頭指標的非迴圈單鏈表

解析:佇列的操作時隊頭出隊,隊尾入隊,所以需要一個頭指標也需要一個尾指標

第五章

1. 一個二維陣列A[10][20]按存放於一個連續的儲存空間中,A[0][0]的儲存地址是200,每個元素佔1個儲存字,則A[6][2]的地址為( B  )

A.226                                    B.322

C.314                                    D.342

解析:從00開始計數,200+6*20+2=322

2.  一個二維陣列A[10][20]按存放於一個連續的儲存空間中,A[0][0]的儲存地址是200,每個元素佔1個儲存字,則A[6][2]的地址為( A  )

A.226                                    B.322

C.314                                    D.342

解析:200+10*2+6=226

3. 設有一個n×n的對稱矩陣A的下三角部分按行存放在一個一維陣列B中,A[0][0]存放於B[0]中,那麼A中的元素A[i][j]存放於B中的存放位置是(  A )

A.(i+1)*i/2+j                         B.(i+1)*j/2+j

C.(2n-i+1)*j/2                       D.(2n-i-1)*j/2

解析:最簡單的方法,帶入特殊值計算。推導過程看PPT

廣義表

①B=(e)        GetHead(B) = e;  GetTail(B) = ( ()).

②A=(a, ((b, c), d, e))

  GetHead( GetHead( GetTail(A))) = GetHead( GetHead( ( ((b, c), d, e) ) ))

                              = GetHead( ((b, c), d, e) ) = (b, c).

③A=( );    B = ( ( ) )

  A空表,長度0,深度1,無表頭和表尾;

  B長度1,深度2,表頭( ),表尾( )。