資料結構期中試題猜測
第一章、緒論
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
解析:演算法的時間複雜度取決於問題的規模和待處理資料的初態,並且,時間複雜度取變化最快項的數量級。
6設有以下三個函式:
以下關係中錯誤的是( C )
A. B.
C. 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 )
- 靜態連結串列既有順序儲存的優點,又有連線儲存的優點。所以,它存取表中第i個元素的時間與i無關
- 靜態連結串列中可容納元素個數的最大數目在定義時就確定了,以後不能增加
- 靜態連結串列與動態連結串列對元素的插入、刪除操作類似,無需做元素移動
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,表頭( ),表尾( )。