題目1:棧和鏈表是兩種不同的數據結構()。正確答案: A
正確 錯誤
解析:
棧和鏈表是兩種不同的數據結構。 棧是邏輯結構的概念,是特殊殊線性表,而鏈表是存儲結構概念,二者不是同 類項
題目2:
若有以下定義和語句:
1 |
|
則不能表示a數組元素的表達式是:() 。 正確答案: B
*p a[10] *a a[p-a]
解析:
A:相當於a[0]
B:以爲數組的下標從0開始,所以10越界。
C:相當於a[0]
D:p和a指向同一個數組,可以做加減法(如果p和a不是指向同一數組則會出錯),得到的值爲整數。此題爲0。所以D也相當於a[0]。
題目3:
在最好情況下,下列排序算法中 排序算法時間複雜度最低的是。
正確答案: B
基數排序 直接插入排序 快速排序 歸併排序
解析:
題目4:
在二叉排序樹(二叉搜索樹)中,最小值結點的( )。
正確答案: A
左孩子一定爲空指針 右孩子一定爲空指針 左、右指針均爲空 左、右指針均不爲空
解析:
對於二叉樹排序,左子樹值一定比節點值小,右子樹值一定比節點值大,因節點值是最小值,則其沒有左子樹
題目5:
對關鍵碼序列28,16,32,12,60,2,5,72快速排序(最常用的快速排序,以第一個關鍵碼爲基準),使用挖坑法,從小到大一次劃分結果爲()
正確答案: D
(2,5,12,16)28(60,32,72) (2,16,5,12)28(60,32,72) (2,16,12,5)28(60,32,72) (5,16,2,12)28(60,32,72)
解析:
原始爲:
28 16 32 12 60 2 5 72
i是左到右找小於28數,j是右到左找小於28數,j先動。
j找到5,i動找到32。兩者互換。有:
28 16 5 12 60 2 32 72
j找到2,i找到60互換有:
28 16 5 12 2 60 32 72
j i相遇,i和28換位子:
2 16 5 12 28 60 32 72
結果是B。
題目6:
某字符串滿足:concat(head(s),head(tail(tail(s))))="ac",(head,tail的定義同廣義表),則S=()
正確答案: C
aabc acba accc acac
解析:
概念解釋:廣義表L=(A,B,C),表頭是A,表尾是(B,C),這是定義。
tail()表示取字符串的尾部,head()表示取字符串的頭,concat()表示字符串拼接。
取兩次尾部一次頭部,然後合併,答案是C。
題目7:
判斷下列說法是否正確:設有兩個串S1和S2,求S2在SI中首次出現位置的運算稱爲求子串。( )
正確答案: B
正確 錯誤
解析:
應屬於模式匹配
題目8:
執行完下列語句段後,i值爲()
1 2 3 4 5 |
|
正確答案: B
4 48 8 無限遞歸
解析:
f(x) 當x大於0時,返回x*f(x-1),否則返回2
f(0) = 2
f(1) = 1 * f(0) = 2
f(2) = 2 * f(1) = 4
f(3) = 3 * f(2) = 12
f(4) = 4 * f(3) = 48
f(4) = f(f(2)) = 48
選B
題目9:
在一般情況下,採用壓縮存儲後,對稱矩陣是所有特殊矩陣中存儲空間節約最多的,這樣的說法正確嗎?
正確答案: B 你的答案: B (正確)
正確 不正確
解析:
稀疏矩陣,0元素遠多於非0元素且非0元素分佈沒有規律。比如一個矩陣只有零散的兩個1,其他元素都是0,那壓縮存儲的時候只需要記錄這兩個非0元素的位置(行,列)還有值(1)就可以了,其他元素都是0。
題目10:
將一個遞歸算法改爲對應的非遞歸算法時,通常需要使用( )。
正確答案: D 你的答案: A (錯誤)
優先隊列 隊列 循環隊列 棧
解析:
遞歸之所以可以採用非遞歸方法實現是因爲可以用棧的方式
如果你採用遞歸時 是由系統管理函數棧
而要寫成非遞歸時必須由你自已來管理一個棧.