(3)通常要求同一邏輯結構中的所有資料元素具有相同的特性,這意味著( )。
a.資料具有同一特點
b.不僅資料元素所包含的資料項的個數要相同,而且對應資料項的型別要一致
c.每個資料元素都一樣
d.資料元素所包含的資料項的個數要相等
答案:b
(6)以下資料結構中,( )是非線性資料結構
a.樹 b.字串 c.佇列 d.棧
答案:a
(2)在n個結點的順序表中,演算法的時間複雜度是o(1)的操作是( )。
a.訪問第i個結點(1≤i≤n)和求第i個結點的直接前驅(2≤i≤n)
b.在第i個結點後插入乙個新結點(1≤i≤n)
c.刪除第i個結點(1≤i≤n)
d.將n個結點從小到大排序
答案:a
解釋:在順序表中插入乙個結點的時間複雜度都是o(n2),排序的時間複雜度為o(n2)或o(nlog2n)。順序表是一種隨機訪問結構,訪問第i個結點和求第i個結點的直接前驅都可以直接通過陣列的下標直接定位,時間複雜度是o(1)。
(8)將兩個各有n個元素的有序表歸併成乙個有序表,其最少的比較次數是( )。
a.n b.2n-1 c.2n d.n-1
答案:a
解釋:當第乙個有序表中所有的元素都小於(或大於)第二個表中的元素,只需要用第二個表中的第乙個元素依次與第乙個表的元素比較,總計比較n次。
(11) 建立乙個包括n個結點的有序單鏈表的時間複雜度是( )。
a.o(1) b.o(n) c.o(n2) d.o(nlog2n)
答案:c
解釋:單鏈表建立的時間複雜度是o(n),而要建立乙個有序的單鏈表,則每生成乙個新結點時需要和已有的結點進行比較,確定合適的插入位置,所以時間複雜度是o(n2)。
(12) 以下說法錯誤的是( )。
a.求表長、定位這兩種運算在採用順序儲存結構時實現的效率不比採用鏈式儲存結構時實現的效率低
b.順序儲存的線性表可以隨機訪問
c.由於順序儲存要求連續的儲存區域,所以在儲存管理上不夠靈活
d.線性表的鏈式儲存結構優於順序儲存結構
答案:d
解釋:鏈式儲存結構和順序儲存結構各有優缺點,有不同的適用場合。
(13) 在單鏈表中,要將s所指結點插入到p所指結點之後,其語句應為( )。
a.s->next=p+1; p->next=s;
b.(*p).next=s; (*s).next=(*p).next;
c.s->next=p->next; p->next=s->next;
d.s->next=p->next; p->next=s;
答案:d
(14) 在雙向鍊錶儲存結構中,刪除p所指的結點時須修改指標( )。
a.p->next->prior=p->prior; p->prior->next=p->next;
b.p->next=p->next->next; p->next->prior=p;
c.p->prior->next=p; p->prior=p->prior->prior;
d.p->prior=p->next->next; p->next=p->prior->prior;
答案:a
(3)陣列q[n]用來表示乙個迴圈佇列,f為當前佇列頭元素的前一位置,r為隊尾元素的位置,假定佇列中元素的個數小於n,計算佇列中元素個數的公式為( )。
a.r-f b.(n+f-r)%n c.n+r-f d.(n+r-f)%n
迴圈佇列:
(尾-頭+總)%總
(尾-頭+總)%總
(尾-頭+總)%總
(4)鏈式棧結點為:(data,link),top指向棧頂.若想摘除棧頂結點,並將刪除結點的值儲存到x中,則應執行操作( )。
a.x=top->data;top=top->link; b.top=top->link;x=top->link;
c.x=top;top=top->link; d.x=top->link;
答案:a
解釋:x=top->data將結點的值儲存到x中,top=top->link棧頂指標指向棧頂下一結點,即摘除棧頂結點。
(5)設有乙個遞迴演算法如下
int fact(int n)
則計算fact(n)需要呼叫該函式的次數為( )。
a. n+1 b. n-1 c. n d. n+2
答案:a
第一次呼叫也算
(6)棧在 ( )中有所應用。
a.遞迴呼叫 b.函式呼叫 c.表示式求值 d.前三個選項都有
答案:d
解釋:遞迴呼叫、函式呼叫、表示式求值均用到了棧的後進先出性質。
(8)設棧s和佇列q的初始狀態為空,元素e1、e2、e3、e4、e5和e6依次進入棧s,乙個元素出棧後即進入q,若6個元素出隊的序列是e2、e4、e3、e6、e5和e1,則棧s的容量至少應該是( )。
a.2 b.3 c.4 d. 6
答案:b
e1入棧,e2入棧(此時需要2個空間),e2出棧,e3入棧,e4入棧(此時需要3個元素空間),e4出棧,e3出棧,e5入棧,e6入棧,e6出棧,e5入棧,e5出棧,e1出棧
由此可見,最少需要3個元素空間
(9)若乙個棧以向量v[1…n]儲存,初始棧頂指標top設為n+1,則元素x進棧的正確操作是( )。
a.top++; v[top]=x; b.v[top]=x; top++;
c.top–; v[top]=x; d.v[top]=x; top–;
答案:c
解釋:初始棧頂指標top為n+1,說明元素從陣列向量的高階位址進棧,又因為元素儲存在向量空間v[1…n]中,所以進棧時top指標先下移變為n,之後將元素x儲存在v[n]。
(10)設計乙個判別表示式中左,右括號是否配對出現的演算法,採用( )資料結構最佳。
a.線性表的順序儲存結構 b.佇列
c. 線性表的鏈式儲存結構 d. 棧
答案:d
終於再這位大神的指點下懂了
(12)迴圈佇列儲存在陣列a[0…m]中,則入隊時的操作為( )。
a. rear=rear+1 b. rear=(rear+1)%(m-1)
c. rear=(rear+1)%m d. rear=(rear+1)%(m+1)
答案:d
迴圈隊列入隊在屁股上加,就像排隊不能插隊要往後排。總共的maxsize為(m+1)
1.選擇題
(1)把一棵樹轉換為二叉樹後,這棵二叉樹的形態是( )。
a.唯一的 b.有多種
c.有多種,但根結點都沒有左孩子 d.有多種,但根結點都沒有右孩子
答案:a
解釋:因為二叉樹有左孩子、右孩子之分,故一棵樹轉換為二叉樹後,這棵二叉樹的形態是唯一的。
(2)由3個結點可以構造出多少種不同的二叉樹?( )
a.2 b.3 c.4 d.5
答案:d
解釋:五種情況如下:
(3)一棵完全二叉樹上有1001個結點,其中葉子結點的個數是( )。
a.250 b. 500 c.254 d.501
答案:d
解釋:設度為0結點(葉子結點)個數為a,度為1的結點個數為b,度為2的結點個數為c,有a=c+1,a+b+c=1001,可得2c+b=1000,由完全二叉樹的性質可得b=0或1,又因為c為整數,所以b=0,c=500,a=501,即有501個葉子結點。
(5)深度為h的滿m叉樹的第k層有( )個結點。(1=
a.mk-1 b.mk-1 c.mh-1 d.mh-1
答案:a
記住第k層肯定要少一些,所以他的數量為2的(k-1)次方
所有的節點數要多一些,所以就是2的k次方減1
錯題 資料結構 佇列
已知迴圈佇列儲存在一維陣列 a 0.n 1 中,且佇列非空時 front 和rear 分別指向隊頭元素和隊尾元素。若初始時佇列空,且要求第乙個進入佇列的元素儲存在 a 0 處,則初始時 front 和rear 的值分別是 a.0,0 b.0,n 1 c.n 1,0 d.n 1,n 1 錯題整理。此題...
資料結構錯題集
若用鍊錶儲存一棵二叉樹時,每個結點除資料域外,還有指向左孩子和右孩子的兩個指標。在這種儲存結構中,n個結點的二叉樹共有 2n 個指標域,其中有 n 1 個指標域是存放了位址,有 n 1 個指標是空指標。解答 因為有n個節點,每個節點都存了乙個lchild,乙個rchild,所以共2n個指標域。因為除...
資料結構 排序 錯題
1 下列說法錯誤的是 正確答案 a b d 已知一顆二叉樹的前序遍歷順序和後序遍歷順序,可以唯一確定這棵二叉樹 將乙個遞迴演算法改為非遞迴演算法時,通常使用佇列作為輔助結構 快速排序和堆排序都是不穩定排序 二分查詢法,平均時間複雜度為o n 解析 a 已知一顆二叉樹的前序遍歷順序和後序遍歷順序不能唯...