牛客網-題目分享(4)

題目1:棧和鏈表是兩種不同的數據結構()。正確答案: A  

正確
錯誤

解析:

棧和鏈表是兩種不同的數據結構。 棧是邏輯結構的概念,是特殊殊線性表,而鏈表是存儲結構概念,二者不是同 類項

題目2:

若有以下定義和語句:

1

int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;

則不能表示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

int f(int x){

    return ((x>0)?x*f(x-1):2)

}

int i;

i=f(f(2));

正確答案: 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 (錯誤)

優先隊列
隊列
循環隊列
棧

解析:

遞歸之所以可以採用非遞歸方法實現是因爲可以用棧的方式
如果你採用遞歸時 是由系統管理函數棧
而要寫成非遞歸時必須由你自已來管理一個棧.

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