數(shù)據(jù)結(jié)構(gòu)試卷B卷(含答案)_第1頁
數(shù)據(jù)結(jié)構(gòu)試卷B卷(含答案)_第2頁
數(shù)據(jù)結(jié)構(gòu)試卷B卷(含答案)_第3頁
數(shù)據(jù)結(jié)構(gòu)試卷B卷(含答案)_第4頁
數(shù)據(jù)結(jié)構(gòu)試卷B卷(含答案)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

千里之行,始于足下讓知識帶有溫度。第第2頁/共2頁精品文檔推薦數(shù)據(jù)結(jié)構(gòu)試卷B卷(含答案)《數(shù)據(jù)結(jié)構(gòu)》試卷B

一、填空題(每空1分,共15分)

1.向量、棧和隊列都是結(jié)構(gòu),可以在向量的

位置插入和刪除元素;對于棧只能在插入和刪除元素;對于隊列只能在插入和刪除元素。

2.棧是一種特別的線性表,允許插入和刪除運算的一端稱

為。不允許插入和刪除運算的一端稱為。

3.數(shù)據(jù)結(jié)構(gòu)是一門討論非數(shù)值計算的程序設(shè)計問題中計算

機(jī)的以及它們之間的和運算等的學(xué)科。

4.在挨次表中插入或刪除一個元素,需要平均移動

元素,詳細(xì)移動的元素個數(shù)與

有關(guān)。

5.在具有n個單元的循環(huán)隊列中,隊滿時共有

個元素。

6.假設(shè)在有序線性表a[20]上舉行折半查找,則比較一次查找勝利的結(jié)點數(shù)為1;比較兩次查找勝利的結(jié)點數(shù)為;比較四次查找勝利的結(jié)點數(shù)為;平均查找長度為。

二、推斷正誤(推斷下列概念的正確性,并作出簡要的說明。)(每小題1分,共10分)

()1.線性表的每個結(jié)點只能是一個容易類型,而鏈表的每個結(jié)點可以是一個復(fù)雜類型。

()2.在表結(jié)構(gòu)中最常用的是線性表,棧和隊列不太常用。

()3.棧是一種對全部插入、刪除操作限于在表的一端舉行的線性表,是一種后進(jìn)先出型結(jié)構(gòu)。

()4.對于不同的使用者,一個表結(jié)構(gòu)既可以是棧,也可以是隊列,也可以是線性表。

()5.線性表的規(guī)律挨次與存儲挨次總是全都的

()6.棧和隊列是一種非線性數(shù)據(jù)結(jié)構(gòu)。

()7.棧和隊列的存儲方式既可是挨次方式,也可是鏈接方式。

()8.兩個棧分享一片延續(xù)內(nèi)存空間時,為提高內(nèi)存

利用率,削減溢出機(jī)會,應(yīng)把兩個棧的棧底分

別設(shè)在這片內(nèi)存空間的兩端。

()9.隊是一種插入與刪除操作分離在表的兩端舉行的線性表,是一種先進(jìn)后出型結(jié)構(gòu)。

()10.一個棧的輸入序列是12345,則棧的輸出序列不行能是12345。

三、單項挑選題(每小題1分,共20分)

()1.?dāng)?shù)據(jù)在計算機(jī)存儲器內(nèi)表示時,物理地址與邏

輯地址相同并且是延續(xù)的,稱之為:(A)存儲結(jié)構(gòu)(B)規(guī)律結(jié)構(gòu)(C)挨次存儲結(jié)構(gòu)(D)鏈?zhǔn)酱鎯Y(jié)構(gòu)

()2.若已知一個棧的入棧序列是1,2,3,…,n,其輸出序列為p1,p2,p3,…,pn,若p1=n,則pi為

A.iB.n=iC.n-i+1

D.不確定

()3.判定一個棧ST(最多元素為m0)為空的條件

A.ST->top0B.ST->top=0C.ST->topm0D.ST->top=m0

()4設(shè)矩陣A是一個對稱矩陣,為了節(jié)約存儲,將其

下三角部分(如下圖所示)按行序存放在一維數(shù)組B[1,

n(n-1)/2]中,對下三角部分中任一元素ai,j(i≤j),在一維數(shù)

組B中下標(biāo)k的值是:A.i(i-1)/2+j-1B.i(i-1)/2+j

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

()5.具有n(n>0)個結(jié)點的徹低二叉樹的深度

為。

(A)?log2(n)?(B)?log2(n)?(C)?log2(n)

?+1(D)?log2(n)+1?

()6.有8個結(jié)點的無向連通圖最少有條邊。

A.5B.6C.7

D.8

7.數(shù)據(jù)結(jié)構(gòu)反映了數(shù)據(jù)元素之間的結(jié)構(gòu)關(guān)系。鏈表是一種??????

????????=nnnnaaaaaaA,2,1,2,21,21,1ΛΛ

A,它對于數(shù)據(jù)元素的插入和刪除

B。通常查找線性表數(shù)據(jù)元素的辦法有

C和

D兩種辦法,其中C是一種只適合于挨次存儲結(jié)構(gòu)但

E的辦法;而D是一種對挨次和鏈?zhǔn)酱鎯Y(jié)構(gòu)均適用的辦法。

供挑選的答案:

A:①挨次存儲線性表②非挨次存儲非線性表③挨次存儲非線性表④非挨次存儲線性表

B:①不需要移動結(jié)點,不需轉(zhuǎn)變結(jié)點指針②不需要移動結(jié)點,只需轉(zhuǎn)變結(jié)點指針

③只需移動結(jié)點,不需轉(zhuǎn)變結(jié)點指針④既需移動結(jié)點,又需轉(zhuǎn)變結(jié)點指針

C:①挨次查找②循環(huán)查找③條件查找④二分法查找

D:①挨次查找②隨機(jī)查找③二分法查找

④分塊查找

E:①效率較低的線性查找②效率較低的非線性查找③效率較高的非線性查找④效率較高的線性查找

答案:A=B=C=D=E=

8.散列法存儲的基本思想是按照A來打算B,碰撞(矛盾)指的是C,處理碰撞的兩類主要辦法是D。

供挑選的答案

A,B:①存儲地址②元素的符號③元素個數(shù)

④關(guān)鍵碼值

⑤非碼屬性⑥平均檢索長度⑦負(fù)載因子⑧散列表空間

C:①兩個元素具有相同序號②兩個元

素的關(guān)鍵碼值不同,而非碼屬性相同

③不同關(guān)鍵碼值對應(yīng)到相同的存儲地址④負(fù)載因子過大⑤數(shù)據(jù)元素過多

D:①線性探查法和雙散列函數(shù)法②建溢出區(qū)法和不建溢出區(qū)法

③除余法和折疊法④拉鏈法和開地址法

答案:A=B=C=D=

9.考慮具有如下性質(zhì)的二叉樹:除葉子結(jié)點外,每個結(jié)點的值都大于其左子樹上的一切結(jié)點的值。并小于等于其右子樹上的一切結(jié)點的值。

現(xiàn)把9個數(shù)1,2,3,…,8,9填入下圖所示的二叉樹的9個結(jié)點中,并使之具有上述性質(zhì)。此時,n1的值是A,n2的值是B,n9的值是C。現(xiàn)欲把10放入此樹并使該樹保持前述性質(zhì),增強(qiáng)的一個結(jié)點可以放在D或E。

供挑選的答案

A~C:①1②2③3④

4⑤

5⑥6

⑦7⑧8⑨9

D~E:①n7下面②n8下面

③n9下面

④n6下面⑤n1與n2之間

⑥n2與n4之間

⑦n6與n9之間⑧n3與n6之間

答案:A=B=C=

D=E=

四、簡答題(每小題5分,共25分)

1.說明線性表、棧與隊的異同點。

2.試寫出如圖所示的二叉樹分離按先序、中序、后序遍歷時得到的結(jié)點序列

3.假設(shè)正讀和反讀都相同的字符序列為“回文”,例如,‘a(chǎn)bba’和‘a(chǎn)bcba’是回文,‘a(chǎn)bcde’和‘a(chǎn)babab’則不是回文。假設(shè)一字符序列已存入計算機(jī),請分析用線性表、堆棧和隊列等方式正確輸出其回文的可能性?

4.試比較挨次存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)的優(yōu)缺點。在什么狀況下用挨次表比鏈表好?

5.給定二叉樹的兩種遍歷序列,分離是:

前序遍歷序列:D,A,C,E,B,H,F(xiàn),G,I;

中序遍歷序列:D,C,B,E,H,A,G,I,F(xiàn),

試畫出二叉樹B,并簡述由隨意二叉樹B的前序遍歷序列和中序遍歷序列求二叉樹B的思想辦法。

五、閱讀理解(每小題5分,共20分)

1、已知L是無表頭結(jié)點的單鏈表,且P結(jié)點既不是首元結(jié)點,

也不是尾元結(jié)點,請寫出在P結(jié)點后插入S結(jié)點的核心語句序列。

2、閱讀下列算法,若有錯,改正之。

1.寫出下列程序段的輸出結(jié)果(隊列中的元素類型QElemType為char)。

voidmain(){

QueueQ;InitQueue(Q);

Charx=’e’;y=’c’;

EnQueue(Q,’h’);EnQueue(Q,’r’);EnQueue(Q,’y’);

DeQueue(Q,x);EnQueue(Q,x);

DeQueue(Q,x);EnQueue(Q,’a’);

while(!QueueEmpty(Q)){DeQueue(Q,y);printf(y);};Printf(x);

}

2.簡述以下算法的功能(棧和隊列的元素類型均為int)。voidalgo3(Queueintd;

InitStack(S);

while(!QueueEmpty(Q)){

DeQueue(Q,d);Push(S,d);

};

while(!StackEmpty(S)){

Pop(S,d);EnQueue(Q,d);

}

}

六、算法設(shè)計(每小題5分,共15分。至少要寫出思路)

1.寫出在挨次存儲結(jié)構(gòu)下將線性表逆轉(zhuǎn)的算法,要求使用最少的附加空間。

2.編寫程序,將若干整數(shù)從鍵盤輸入,以單鏈表形式存儲起來,然后計算單鏈表中結(jié)點的個數(shù)(其中指針P指向該鏈表的第一個結(jié)點)。

3.試寫一個算法,判別讀入的一個以‘@’為結(jié)束符的字符序列是否是“回文”。

答案

一、填空題(每空1分,共15分)

1.向量、棧和隊列都是線性結(jié)構(gòu),可以在向量的任何位置插入和刪除元素;對于棧只能在棧頂插入和刪除元素;對于隊列只能在隊尾插入和隊首刪除元素。

2.棧是一種特別的線性表,允許插入和刪除運算的一端稱為棧頂。不允許插入和刪除運算的一端稱為棧底。

3.數(shù)據(jù)結(jié)構(gòu)是一門討論非數(shù)值計算的程序設(shè)計問題中計算機(jī)的操作對象以及它們之間的關(guān)系和運算等的學(xué)科。

4.在挨次表中插入或刪除一個元素,需要平均移動表中一

半元素,詳細(xì)移動的元素個數(shù)與表長和該元素在表中的位置有關(guān)。

5.在具有n個單元的循環(huán)隊列中,隊滿時共有n-1個元

素。

8.假設(shè)在有序線性表a[20]上舉行折半查找,則比較一次查

找勝利的結(jié)點數(shù)為1;比較兩次查找勝利的結(jié)點數(shù)為

2;比較四次查找勝利的結(jié)點數(shù)為8;平均查找長

度為3.7。解:明顯,平均查找長度=O(log2n)top0B.ST->top=0

C.ST->topm0D.ST->top=m0

(B)4、設(shè)矩陣A是一個對稱矩陣,為了節(jié)約存儲,將

其下三角部分(如下圖所示)按行序存放在一維數(shù)組B[1,

n(n-1)/2]中,對下三角部分中任一元素ai,j(i≤j),在一維數(shù)

組B中下標(biāo)k的值是:

A.i(i-1)/2+j-1B.i(i-1)/2+jC.i(i+1)/2+j-1D.i(i+1)/2+j

(C)5.具有n(n>0)個結(jié)點的徹低二叉樹的深度

為。

(A)?log2(n)?(B)?log2(n)?(C)?log2(n)

?+1(D)?log2(n)+1?

(C)6.有8個結(jié)點的無向連通圖最少有條邊。

A.5B.6C.7??????

????????=nnnnaaaaaaA,2,1,2,21,21,1ΛΛ

D.8

7、答案:A=④B=②C=④D=①E=③

8、答案:A=④B=①C=③D=④

9、答案:A=⑦B=④C=⑥D(zhuǎn)=②E=⑥

四、簡答題(每小題4分,共20分)

1.說明線性表、棧與隊的異同點。

劉答:相同點:都是線性結(jié)構(gòu),都是規(guī)律結(jié)構(gòu)的概念。都可以用挨次存儲或鏈表存儲;棧和隊列是兩種特別的線性表,即受限的線性表,只是對插入、刪除運算加以限制。

不同點:①運算規(guī)章不同,線性表為隨機(jī)存取,而棧是只允許在一端舉行插入、刪除運算,因而是后進(jìn)先出表LIFO;隊列是只允許在一端舉行插入、另一端舉行刪除運算,因而是先進(jìn)先出表FIFO。

②用途不同,堆棧用于子程調(diào)用和庇護(hù)現(xiàn)場,隊列用于多道作業(yè)處理、指令寄存及其他運算等等。

2.試寫出如圖所示的二叉樹分離按先序、中序、后序遍歷時得到的結(jié)點序列。

答:DLR:ABDFJGKCEHILM

LDR:BFJDGKACHELIM

LRD:JFKGDBHLMIECA

3.假設(shè)正讀和反讀都相同的字符序列為“回文”,例如,‘a(chǎn)bba’和‘a(chǎn)bcba’是回文,‘a(chǎn)bcde’和‘a(chǎn)babab’則不是回文。假設(shè)一字符序列已存入計算機(jī),請分析用線性表、堆棧和隊列等方式正確輸出其回文的可能性?

答:線性表是隨機(jī)存儲,可以實現(xiàn),靠循環(huán)變量(j--)從表尾開頭打印輸出;

堆棧是后進(jìn)先出,也可以實現(xiàn),靠正序入棧、逆序出棧即可;

隊列是先進(jìn)先出,不易實現(xiàn)。

哪種方式最好,要詳細(xì)狀況詳細(xì)分析。若正文在機(jī)內(nèi)已是挨次存儲,則直接用線性表從后往前讀取即可,或?qū)⒍褩m旈_到數(shù)組末尾,然后直接用POP動作實現(xiàn)。(但堆棧是先減后壓還是……)

若正文是單鏈表形式存儲,則等同于隊列,需開輔助空間,可以從鏈?zhǔn)组_頭入棧,所有壓入后再依次輸出。

4.試比較挨次存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)的優(yōu)缺點。在什么狀況下用挨次表比鏈表好?

答:①挨次存儲時,相鄰數(shù)據(jù)元素的存放地址也相鄰(規(guī)律與物理統(tǒng)一);要求內(nèi)存中可用存儲單元的地址必需是延續(xù)的。

優(yōu)點:存儲密度大(=1?),存儲空間利用率高。缺點:插入或刪除元素時不便利。

②鏈?zhǔn)酱鎯r,相鄰數(shù)據(jù)元素可任意存放,但所占存儲空間分兩部分,一部分存放結(jié)點值,另一部分存放表示結(jié)點間關(guān)系的指針

優(yōu)點:插入或刪除元素時很便利,使用靈便。缺點:存儲密度小(next=P->next;

P->next=S;

2、答:這是找結(jié)點后繼的程序。

共有3處錯誤。

注:當(dāng)rtag

=1時說明內(nèi)裝后繼指針,可直接返回,第一句無錯。

當(dāng)rtag=0時說明內(nèi)裝右孩子指針,但孩子未必是后繼,需要計算。中序遍歷應(yīng)該先左再根再右,所以應(yīng)該找左子樹直到葉子處。r=r->lchild;直到LTag=1;

應(yīng)改為:while(!r->Ltag)r=r->Lchild;

3.寫出下列程序段的輸出結(jié)果(隊列中的元素類型QElem

Type為char)。

voidmain(){

QueueQ;InitQueue(Q);

Charx=’e’;y=’c’;

EnQueue(Q,’h’);EnQueue(Q,’r’);EnQueue(Q,y);

DeQueue(Q,x);EnQueue(Q,x);

DeQueue(Q,x);EnQueue(Q,’a’);

while(!QueueEmpty(Q)){DeQueue(Q,y);printf(y);};Printf(x);

}

答:輸出為“char”。

4.簡述以下算法的功能(棧和隊列的元素類型均為int)。voidalgo3(Queueintd;

InitStack(S);

while(!QueueEmpty(Q)){

DeQueue(Q,d);Push(S,d);

};

while(!StackEmpty(S)){

Pop(S,d);EnQueue(Q,d);

}

}

答:該算法的功能是:利用堆棧做輔助,將隊列中的數(shù)據(jù)元素舉行逆置。

六、算法設(shè)計(每小題5分,共15分。至少要寫出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論