數(shù)據(jù)結(jié)構(gòu)與算法復(fù)習(xí)題庫含答案_第1頁
數(shù)據(jù)結(jié)構(gòu)與算法復(fù)習(xí)題庫含答案_第2頁
數(shù)據(jù)結(jié)構(gòu)與算法復(fù)習(xí)題庫含答案_第3頁
數(shù)據(jù)結(jié)構(gòu)與算法復(fù)習(xí)題庫含答案_第4頁
數(shù)據(jù)結(jié)構(gòu)與算法復(fù)習(xí)題庫含答案_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、數(shù)據(jù)結(jié)構(gòu)復(fù)習(xí)題第一章概論一、選擇題1、研究數(shù)據(jù)結(jié)構(gòu)就是研究(D)oA.數(shù)據(jù)的邏輯結(jié)構(gòu)B.數(shù)據(jù)的存儲結(jié)構(gòu)C.數(shù)據(jù)的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)D.數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)及其基本操作2、算法分析的兩個主要方面是(A)<>A.空間復(fù)雜度和時間復(fù)雜度B.正確性和簡單性C.可讀性和文檔性D.數(shù)據(jù)復(fù)雜性和程序復(fù)雜性3、具有線性結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)是(D)oA.圖B.樹C.廣義表D.棧4、計(jì)算機(jī)中的算法指的是解決某一個問題的有限運(yùn)算序列,它必須具備輸入、輸出、(B)等5個特性。A.可執(zhí)行性、可移植性和可擴(kuò)充性B.可執(zhí)行性、有窮性和確定性C.確定性、有窮性和穩(wěn)定性D.易讀性、穩(wěn)定性和確定性5、下面程序段的時間復(fù)

2、雜度是(C)。foriO;im;i+forjO;jn;j+A.0m2B.0n2C.Om*nD.Om+n6、算法是(D)oA.計(jì)算機(jī)程序B.解決問題的汁算方法C.排序算法D.解決問題的有限運(yùn)算序列7、某算法的語句執(zhí)行頻度為(3n+nlog2n+n2+8),其時間復(fù)雜度表示(C)OA.OnB.0nlog2nC.On2D.01og2n8、下面程序段的時間復(fù)雜度為(C)。il;whileinii*3;A.OnB.03nC.01og3nD.0n39、數(shù)據(jù)結(jié)構(gòu)是一門研究非數(shù)值訃算的程序設(shè)訃問題中訃算機(jī)的數(shù)據(jù)元素以及它們之間的(B)和運(yùn)算等的學(xué)科。A.結(jié)構(gòu)B.關(guān)系C.運(yùn)算D.算法10、下面程序段的時間復(fù)雜度

3、是(A)oisO;whilesn1 tt;s+i;A.OnB.0n2C.01og2nD.0n311、抽象數(shù)據(jù)類型的三個組成部分分別為(A)<>A.數(shù)據(jù)對象、數(shù)據(jù)關(guān)系和基本操作B.數(shù)據(jù)元素、邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)C.數(shù)據(jù)項(xiàng)、數(shù)據(jù)元素和數(shù)據(jù)類型D.數(shù)據(jù)元素、數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型12、通常從正確性、易讀性、健壯性、高效性等4個方面評價算法的質(zhì)量,以下解釋錯誤的是(D)。A.正確性算法應(yīng)能正確地實(shí)現(xiàn)預(yù)定的功能B.易讀性算法應(yīng)易于閱讀和理解,以便調(diào)試、修改和擴(kuò)充C.健壯性當(dāng)環(huán)境發(fā)生變化時,算法能適當(dāng)?shù)刈龀龇磻?yīng)或進(jìn)行處理,不會產(chǎn)生不需要的運(yùn)行結(jié)果D.高效性即達(dá)到所需要的時間性能13、下列程序段的時間

4、復(fù)雜度為(B)。xn;yO;whilexy+l*y+lyy+1;A.OnBC.01D.0n2二、填空題1、程序段uil;whileinii*2;的時間復(fù)雜度為Olog2no2、數(shù)據(jù)結(jié)構(gòu)的四種基本類型中,樹形結(jié)構(gòu)的元素是一對多關(guān)系。三、綜合題1、將數(shù)量級01,0N,0X2,0X3,0NL0G2N,0L0G2N,02N按增長率由小到大排序。答案:0101og2NON0Nlog2N0N20N302N一、填空題1 .數(shù)據(jù)結(jié)構(gòu)被形式地定義為(D,R),其中D是數(shù)據(jù)元素的有限集合,R是D上的關(guān)系有限集合。2 .數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)和數(shù)據(jù)的運(yùn)算這三個方面的內(nèi)容。3 .數(shù)據(jù)結(jié)構(gòu)按邏輯結(jié)構(gòu)

5、可分為兩大類,它們分別是線性結(jié)構(gòu)和非線性結(jié)構(gòu)。4 .線性結(jié)構(gòu)中元素之間存在一對一關(guān)系,樹形結(jié)構(gòu)中元素之間存在一對多關(guān)系,圖形結(jié)構(gòu)中元素之間存在多對多關(guān)系。0.在線性結(jié)構(gòu)中,第一個結(jié)點(diǎn)沒有前驅(qū)結(jié)點(diǎn),其余每個結(jié)點(diǎn)有且只有1個前驅(qū)結(jié)點(diǎn);最后一個結(jié)點(diǎn)沒有后續(xù)結(jié)點(diǎn),其余每個結(jié)點(diǎn)有且只有1個后續(xù)結(jié)點(diǎn)。6.在樹形結(jié)構(gòu)中,樹根結(jié)點(diǎn)沒有前驅(qū)結(jié)點(diǎn),其余每個結(jié)點(diǎn)有且只有1個前驅(qū)結(jié)點(diǎn);葉子結(jié)點(diǎn)沒有后續(xù)結(jié)點(diǎn),其余每個結(jié)點(diǎn)的后續(xù)結(jié)點(diǎn)數(shù)可以任意多個。7.在圖形結(jié)構(gòu)中,每個結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn)數(shù)和后續(xù)結(jié)點(diǎn)數(shù)可以任意多個。8.數(shù)據(jù)的存儲結(jié)構(gòu)可用四種基本的存儲方法表示,它們分別是順序、鏈?zhǔn)?、索引、散列?.數(shù)據(jù)的運(yùn)算最常用的有5種,它

6、們分別是插入、刪除、修改、查找、排序。10.一個算法的效率可分為時間效率和空間效率。11任何一個C程序都由一個主函數(shù)和若干個被調(diào)用的其它函數(shù)組成。二、單項(xiàng)選擇題(B)1,非線性結(jié)構(gòu)是數(shù)據(jù)元素之間存在一種:A)一對多關(guān)系B)多對多關(guān)系C)多對一關(guān)系D)一對一關(guān)系(C)2,數(shù)據(jù)結(jié)構(gòu)中,與所使用的計(jì)算機(jī)無關(guān)的是數(shù)據(jù)的結(jié)構(gòu);A存儲B物理C邏輯D物理和存儲(C)3,算法分析的目的是:A找出數(shù)據(jù)結(jié)構(gòu)的合理性B研究算法中的輸入和輸出的關(guān)系C分析算法的效率以求改進(jìn)D分析算法的易懂性和文檔性(A)4.算法分析的兩個主要方面5是:A空間復(fù)雜性和時間復(fù)雜性B正確性和簡明性C可讀性和文檔性D數(shù)據(jù)復(fù)雜性和程序復(fù)雜性(c

7、)5.計(jì)算機(jī)算法指的是:A計(jì)算方法B排序方法C解決問題的有限運(yùn)算序列D調(diào)度方法(B)6.計(jì)算機(jī)算法必須具備輸入、輸出和等5個特性。A可行性、可移植性和可擴(kuò)充性B可行性、確定性和有窮性C確定性、有窮性和穩(wěn)定性D易讀性、穩(wěn)定性和安全性三、簡答題1 .數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型兩個概念之間有區(qū)別嗎?答:簡單地說,數(shù)據(jù)結(jié)構(gòu)定義了一組按某些關(guān)系結(jié)合在一起的數(shù)組元素。數(shù)據(jù)類型不僅定義了一組帶結(jié)構(gòu)的數(shù)據(jù)元素,而且還在其上定義了一組操作。2 .簡述線性結(jié)構(gòu)與非線性結(jié)構(gòu)的不同點(diǎn)。答:線性結(jié)構(gòu)反映結(jié)點(diǎn)間的邏輯關(guān)系是一對一的,非線性結(jié)構(gòu)反映結(jié)點(diǎn)間的邏輯關(guān)系是多對多的。四、分析下面各程序段的時間復(fù)雜度五、設(shè)有數(shù)據(jù)邏輯結(jié)構(gòu)S(

8、D,R),試按各小題所給條件畫出這些邏輯結(jié)構(gòu)的圖示,并確定其是哪種邏輯結(jié)構(gòu)。1Ddl,d2,d3,d4Rdl,d2,d2,d3,d3,d4Ddl,d2,,d9Rdl,d2,dl,d3,d3,dl,d3,d6,d6,d8,d4,do,d6,d7,d8,d93.Ddl,d2,,d9Rdl,d3,dl,d&d2,d3,d2,d4,d2,d5,d3,d9,do,d6,d8,d9,d9,d7,d4,d7,d4,d6第二章線性表一、選擇題1、若長度為n的線性表采用順序存儲結(jié)構(gòu),在其笫i個位置插入一個新元素算法的時間復(fù)雜度()。A.01og2nB.01C.OnD.0n22、若一個線性表中最常用的操作

9、是取第i個元素和找第i個元素的前趨元素,則采用()存儲方式最節(jié)省時間。A.順序表B.單鏈表C雙鏈表D.單循環(huán)鏈表3、具有線性結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)是()。A.圖B.樹C.廣義表D.棧4、在一個長度為n的順序表中,在第i個元素之前插入一個新元素時,需向后移動()個元素。A.niB.n-i+1C.n-ilD.i5、非空的循環(huán)單鏈表head的尾結(jié)點(diǎn)p滿足()。A.p-nextheadBp-nextNULLCpNULLD-phead6、鏈表不具有的特點(diǎn)是()。A.可隨機(jī)訪問任一元素B.插入刪除不需要移動元素C.不必事先估計(jì)存儲空間D.所需空間與線性表長度成正比7、在雙向循環(huán)鏈表中,在p指針?biāo)傅慕Y(jié)點(diǎn)后插入一個

10、指針q所指向的新結(jié)點(diǎn),修改指針的操作是()。A.p-nextq;q-priorp;p-next-priorq;q-nextq;Bp-nextq;p-next-priorq;q-priorp;q-nextp-next;Cq-priorp;q-nextp-next;p-next-priorq;p-nextq;Dq-nextp-next;q-priorp;p-nextq;p-nextq;8、線性表采用鏈?zhǔn)酱鎯r,結(jié)點(diǎn)的存儲地址()。A.必須是連續(xù)的B.必須是不連續(xù)的C.連續(xù)與否均可D.和頭結(jié)點(diǎn)的存儲地址相連續(xù)9、在一個長度為n的順序表中刪除第i個元素,需要向前移動()個元素。A.n-iBn-i+1C

11、n-i*1D-i+110、線性表是n個()的有限序列。A.表元素B.字符C,數(shù)據(jù)元素D.數(shù)據(jù)項(xiàng)11、從表中任一結(jié)點(diǎn)出發(fā),都能掃描整個表的是()。A.單鏈表B.順序表C.循環(huán)鏈表D.靜態(tài)鏈表12、在具有n個結(jié)點(diǎn)的單鏈表上查找值為x的元素時,其時間復(fù)雜度為OoA.OnB.01C.0n2D.OrTl13、 線性表Lal,a2,an,下列說法正確的是()。A.每個元素都有一個直接前驅(qū)和一個直接后繼B.線性表中至少要有一個元素C.表中諸元素的排列順序必須是山小到大或III大到小D.除第一個和最后一個元素外,其余每個元素都由一個且僅有一個直接詢驅(qū)和直接后繼14、 一個順序表的第一個元素的存儲地址是90,每

12、個元素的長度為2,則第6個元素的存儲地址是()。A.98B.100C.102D.10615、在線性表的下列存儲結(jié)構(gòu)中,讀取元素花費(fèi)的時間最少的是()。A.單鏈表B.雙鏈表C.循環(huán)鏈表D.順序表16、在一個單鏈表中,若刪除p所指向結(jié)點(diǎn)的后續(xù)結(jié)點(diǎn),則執(zhí)行()。A.p-nextp-next-next;B-pp-next;p-nextp-next-next;Cpp-next;D.pp-next-next;17、將長度為n的單鏈表連接在長度為m的單鏈表之后的算法的時間復(fù)雜度為()。A.01B-OnC-OmD-Om+nA.隨機(jī)存取B.順序存取C.索引存取D.散列存取19、順序表中,插入一個元素所需移動的元

13、素平均數(shù)是()。A.n-1/2B.nC.n+1D.n+1/210、循環(huán)鏈表的主要優(yōu)點(diǎn)是0。A.不再需要頭指針B.已知某結(jié)點(diǎn)位置后能容易找到其直接前驅(qū)C.在進(jìn)行插入、刪除運(yùn)算時能保證鏈表不斷開D.在表中任一結(jié)點(diǎn)出發(fā)都能掃描整個鏈表11、不帶頭結(jié)點(diǎn)的單鏈表head為空的判定條件是()。A.headNULLB.head-nextNULLC.head-nextheadD.head!NULL12、在下列對順序表進(jìn)行的操作中,算法時間復(fù)雜度為01的是()。A.訪問第i個元素的前驅(qū)B.在第i個元素之后插入一個新元素C.刪除第i個元素D.對順序表中元素進(jìn)行排序13、已知指針p和q分別指向某單鏈表中第一個結(jié)點(diǎn)和

14、最后一個結(jié)點(diǎn)。假設(shè)指針s指向另一個單鏈表中某個結(jié)點(diǎn),則在s所指結(jié)點(diǎn)之后插入上述鏈表應(yīng)執(zhí)行的語句為()。A.q-nexts-next;s-nextp;Bs-nextp;q-nexts-next;Cp-nexts-next;s-nextq;Ds-nextq;p-nexts-next;14、在以下的敘述中,正確的是()。A.線性表的順序存儲結(jié)構(gòu)優(yōu)于鏈表存儲結(jié)構(gòu)B.線性表的順序存儲結(jié)構(gòu)適用于頻繁插入/刪除數(shù)據(jù)元素的情況C.線性表的鏈表存儲結(jié)構(gòu)適用于頻繁插入/刪除數(shù)據(jù)元素的情況D.線性表的鏈表存儲結(jié)構(gòu)優(yōu)于順序存儲結(jié)構(gòu)13、在表長為n的順序表中,當(dāng)在任何位置刪除一個元素的概率相同時,刪除一個元素所需移動的

15、平均個數(shù)為()。A.nT/2Bn/2C.n+1/2D.n16、在一個單鏈表中,已知q所指結(jié)點(diǎn)是p所指結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn),若在q和P之間插入一個結(jié)點(diǎn)s,則執(zhí)行()。A.s-nextp-next;p-nexts;Bp-nexts-next;s-nextp;C-q-nexts;s-nextp;Dp-nexts;s-nextq;17、在單鏈表中,指針p指向元素為x的結(jié)點(diǎn),實(shí)現(xiàn)刪除x的后繼的語句是()。A.pp-next;B-p-nextp-bnext-knext;Cp-nextp;D.pp-knext-knext;18、在頭指針為head且表長大于1的單循環(huán)鏈表中,指針p指向表中某個結(jié)點(diǎn),若p-next-

16、nexthead,則()。A.p指向頭結(jié)點(diǎn)B.p指向尾結(jié)點(diǎn)C.p的直接后繼是頭結(jié)點(diǎn)D.p的直接后繼是尾結(jié)點(diǎn)二、填空題1、設(shè)單鏈表的結(jié)點(diǎn)結(jié)構(gòu)為(data,next)。已知指針p指向單鏈表中的結(jié)點(diǎn),q指向新結(jié)點(diǎn),欲將q插入到P結(jié)點(diǎn)之后,則需要執(zhí)行的語句:;。答案:q-nextp-nextp-nextq2、線性表的邏輯結(jié)構(gòu)是,其所含元素的個數(shù)稱為線性表的。答案:線性結(jié)構(gòu)長度3、寫出帶頭結(jié)點(diǎn)的雙向循環(huán)鏈表L為空表的條件。答案:L-priorL-nextL4、帶頭結(jié)點(diǎn)的單鏈表head為空的條件是。答案:head-nextNULL5、在一個單鏈表中刪除p所指結(jié)點(diǎn)的后繼結(jié)點(diǎn)時,應(yīng)執(zhí)行以下操作:qp-next

17、;p-next;答案:q-next三、判斷題1、單鏈表不是一種隨機(jī)存儲結(jié)構(gòu)。?2、在具有頭結(jié)點(diǎn)的單鏈表中,頭指針指向鏈表的笫一個數(shù)據(jù)結(jié)點(diǎn)。X3、用循環(huán)單鏈表表示的鏈隊(duì)列中,可以不設(shè)隊(duì)頭指針,僅在隊(duì)尾設(shè)置隊(duì)尾指針。4、順序存儲方式只能用于存儲線性結(jié)構(gòu)。X5、 在線性表的順序存儲結(jié)構(gòu)中,邏輯上相鄰的兩個元素但是在物理位置上不一定是相鄰的。X6、鏈?zhǔn)酱鎯Φ木€性表可以隨機(jī)存取。X四、程序分析填空題1、函數(shù)GetElem實(shí)現(xiàn)返回單鏈表的第i個元素,請?jiān)诳崭裉帉⑺惴ㄑa(bǔ)充完整。intGetElemLinkListL,inti,Elemtype*eLinkListp;intj;pL-next;jl;while

18、pft&jil;+j;if!pijireturnERROR;*e2returnOK;答案:Ipp-next2p-data2、函數(shù)實(shí)現(xiàn)單鏈表的插入算法,請?jiān)诳崭裉帉⑺惴ㄑa(bǔ)充完整。intListlnsertLinkListL,inti,ElemTypeeLNode*p,*s;intj;PL;JO;whilep!NULL&&jiTpp-next;j+;ifpNULLJi-1returnERROR;sLNode*malIocsizeofLNode;s-datae;returnOK;AListlnsert*/答案:ls-nextp-next2p-nexts3、函數(shù)ListDele

19、te.sq實(shí)現(xiàn)順序表刪除算法,請?jiān)诳崭裉帉⑺惴ㄑa(bǔ)充完整。intListDelete_sqSqlist*L,intiintk;ifiliL-lengthreturnERROR:forki-1;kL-length-1;k+L-slistkJ(1);(2) ;returnOK;答案:(l)L-slistk+l(2)-L-Length4.函數(shù)實(shí)現(xiàn)單鏈表的刪除算法,請?jiān)诳崭裉帉⑺惴ㄑa(bǔ)充完整。intListDeleteLinkListL,inti,ElemType*sLNode*p,*q;intj;pL;jO;while(1)&&jiTpp-next;j+;ifp-nextNULLjiTr

20、eturnERROR;qp-next:(2);*sq-data;freeq;returnOK;/*listDelete*/答案:Ip-next!NULL2p-nextq-next5、寫出算法的功能。intLheadnode*head;intnO;node*p;phead;whilepiNULLpp-next;n+;returnn;答案:求單鏈表head的長度五、綜合題1、編寫算法,實(shí)現(xiàn)帶頭結(jié)點(diǎn)單鏈表的逆置算法。答案:voidinventLnode*headLnode*p,*q;if!head-nextreturnERROR:phead-next;qp-next;p-nextNULL;while

21、qpq;-next;p-nexthead-next;head-nextp;2、 有兩個循環(huán)鏈表,鏈頭指針分別為L1和L2,要求寫出算法將L2鏈表鏈到L1鏈表之后,且連接后仍保持循環(huán)鏈表形式。答案:voidmergeLnode*L1,Lnode*L2Lnode*p,*q;whilep-next!L1pp-next;whi1eq-next!L2-next;q-nextLl;p-nextL2;3、 設(shè)一個帶頭結(jié)點(diǎn)的單向鏈表的頭指針為head,設(shè)計(jì)算法,將鏈表的記錄,按照data域的值遞增排療:。答案:voidassendingLnode*headLnode*p,*q,*r,*s;phead-next

22、;qp-next;p-nextNULL;whileqrq;-*next;ifr-datap-datar-nextp;head-nextr;pr;elsewhile!p&&r-datap-datasp;pp-next;r-nextp;s-nextr;phead-next;4、編寫算法,將一個頭指針為head不帶頭結(jié)點(diǎn)的單鏈表改造為一個單向循環(huán)鏈表,并分析算法的時間復(fù)雜度。答案:voidlinklist_cLnode*headLnode*p;phead;if!preturnERROR:whi1ep-next!NULLpp-next;p-nexthead;設(shè)單鏈表的長度(數(shù)據(jù)結(jié)點(diǎn)數(shù))

23、為N,則該算法的時間主要花費(fèi)在查找鏈表最后一個結(jié)點(diǎn)上(算法中的while循環(huán)),所以該算法的時間復(fù)雜度為0()O5已知head為帶頭結(jié)點(diǎn)的單循環(huán)鏈表的頭指針,鏈表中的數(shù)據(jù)元素依次為(al,a2,a3,a4,an),A為指向空的順序表的指針。閱讀以下程序段,并回答問題:寫出執(zhí)行下列程序段后的順序表A中的數(shù)據(jù)元素;簡要敘述該程序段的功能。ifhead-next!headphead-next;A-lengthO;whilep-next!headpp-next;A-dataA-length+p-data;ifp-next!headpp-next;答案:1a2,a4,,2將循環(huán)單鏈表中偶數(shù)結(jié)點(diǎn)位置的元素

24、值寫入順序表A6、設(shè)順序表va中的數(shù)據(jù)元數(shù)遞增有序。試寫一算法,將x插入到順序表的適當(dāng)位置上,以保持該表的有序性。答案:voidInsert_sqSqlistvail,ElemTypexinti,j,n;nlengthvaD;ifxvaiiZvanx;elseiO;whilexvaLiZi+;forjn-l;jl;j-vaj+lvaj;vaLix;n+;7、假設(shè)線性表采用順序存儲結(jié)構(gòu),表中元素值為整型。閱讀算法f2,設(shè)順序表L3,7,3,2,1,1,&7,3,寫出執(zhí)行算法f2后的線性表L的數(shù)據(jù)元素,并描述該算法的功能。voidf2SeqList*Linti,j,k;kO;foriO:i

25、L-length;i+forjO;jk&&L-dataEij!L-datajJ;j+;ifjkifk!iL-datakL-dataiZ;k+;L-lengthk;答案:3, 7,2,1,8刪除順序表中重復(fù)的元素8、已知線性表中的元素以值遞增有序排列,并以單鏈表作存儲結(jié)構(gòu)。試寫一算法,刪除表中所有大于x且小于y的元素(若表中存在這樣的元素)同時釋放被刪除結(jié)點(diǎn)空間。答案:voidDeleteJistLnode*head,ElemTypex,ElemTypeyLnode*q;if!headreturnERROR;phead;qp;while!pifpdatax&&p-

26、datayi+;ifpheadheadp-next;freep;phead;qp;elseq-nextp-next;freep;pq-next;elseQP;pp-next;9、在帶頭結(jié)點(diǎn)的循環(huán)鏈表L中,結(jié)點(diǎn)的數(shù)據(jù)元素為整型,且按值遞增有序存放。給定兩個整數(shù)&和b,且由編寫算法刪除鏈表L中元素值大于a且小于b的所有結(jié)點(diǎn)。第三章棧和隊(duì)列一、選擇題1、一個棧的輸入序列為:a,b,c,d,e,則棧的不可能輸出的序列是()。Aa,b,c,d,eBd,e,c,b,aC-d,c,e,a,bDe,d,c,b,a2、判斷一個循環(huán)隊(duì)列Q(最多n個元素)為滿的條件是()oA.Q-rearQ-frontB-

27、Q-rearQ-front+1C-Q-frontQ-rear+l%nD.Q-frontQ-rearl%n3、設(shè)計(jì)一個判別表達(dá)式中括號是否配對的算法,采用()數(shù)據(jù)結(jié)構(gòu)最佳。A.順序表B.鏈表C.隊(duì)列D.棧4、帶頭結(jié)點(diǎn)的單鏈表head為空的判定條件是()。A.headNULLB.head-nextNULLC.head-next!NULLD.head!NULL5、一個棧的輸入序列為:1,2,3,4,則棧的不可能輸出的序列是()。A.1243B.2134C.1432D.4312E.32146、若用一個大小為6的數(shù)組來實(shí)現(xiàn)循環(huán)隊(duì)列,且當(dāng)rear和front的值分別為0,3o當(dāng)從隊(duì)列中刪除一個元素,再加入

28、兩個元素后,rear和front的值分別為OoA.1和5B.2和4c.4和2D.5和17、隊(duì)列的插入操作是在()。A.隊(duì)尾B.隊(duì)頭C.隊(duì)列任意位置D.隊(duì)頭元素后8、循環(huán)隊(duì)列的隊(duì)頭和隊(duì)尾指針分別為front和rear,則判斷循環(huán)隊(duì)列為空的條件是()。A.frontrearB.frontOC.rearOD.frontrear+19、一個順序棧S,其棧頂指針為top,則將元素e入棧的操作是()。A*S-tope;S-top+;BS-top+;*S-tope;C*S-topeD.S-tope;10、 表達(dá)式卅b+c-d的后綴表達(dá)式是()。A. abcd+-B.abc+*d-C.abc*+d、D-+*a

29、bcd11、將遞歸算法轉(zhuǎn)換成對應(yīng)的非遞歸算法時,通常需要使用()來保存中間結(jié)果。A.隊(duì)列B.棧C.鏈表D.樹12、棧的插入和刪除操作在()。A.棧底B.棧頂C任意位置D.指定位置13、五節(jié)車廂以編號1,2,3,4,5順序進(jìn)入鐵路調(diào)度站(棧),可以得到()的編組。A.3,4,5,1,2B.2,4,1,3,5C.3,5,4,2,1D.1,3,5,2,414、判定一個順序棧S(棧空間大小為n)為空的條件是()。A.S-topOBS-top!0CS-topnDS-top!n15、在一個鏈隊(duì)列中,front和rear分別為頭指針和尾指針,則插入一個結(jié)點(diǎn)S的操作為OOA.frontfront-nextB-

30、s-nextrear;rearsC-rear-nexts;rears;Ds-nextfront;fronts;16、一個隊(duì)列的入隊(duì)序列是1,2,3,4,則隊(duì)列的出隊(duì)序列是()oA.1,2,3,4B.4,3,2,1C.1,4,3,2D.3,4,1,217、依次在初始為空的隊(duì)列中插入元素a,b,c,d以后,緊接著做了兩次刪除操作,此時的隊(duì)頭元素是OoA.aB.bC.cD.d18、正常惜況下,刪除非空的順序存儲結(jié)構(gòu)的堆棧的棧頂元素,棧頂指針top的變化是()OA.top不變B.topOC.toptop+1D.toptop-119、判斷一個循環(huán)隊(duì)列Q(空間大小為M)為空的條件是(A)<>A

31、.Q-frontQ-rearB.Q-rear-Q-frontTMC.Q-front+lQ-rearD.Q-rear+lQ-front20、設(shè)計(jì)一個判別表達(dá)式中左右括號是否配對出現(xiàn)的算法,采用(C)數(shù)據(jù)結(jié)構(gòu)最佳。A.線性表的順序存儲結(jié)構(gòu)B.隊(duì)列C.棧D.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)21、當(dāng)用大小為N的數(shù)組存儲順序循環(huán)隊(duì)列時,該隊(duì)列的最大長度為(B)oA.NB.N+lC.N-lD.N-222、隊(duì)列的刪除操作是在(A)oA.隊(duì)首B.隊(duì)尾C.隊(duì)前D.隊(duì)后23、若讓元素1,2,3依次進(jìn)棧,則出棧次序不可能是()oA.3,2,1B.2,1,3C.3,1,2D-1,3,224、循環(huán)隊(duì)列用數(shù)組A0,m-1存放其元素值

32、,已知其頭尾指針分別是front和rear,則當(dāng)前隊(duì)列中的元素個數(shù)是(A)。A.rear-front+m%mBrear-front+1C-rear-front-lD-rear-front25、在解決計(jì)算機(jī)主機(jī)和打印機(jī)之間速度不匹配問題時,通常設(shè)置一個打印數(shù)據(jù)緩沖區(qū),主機(jī)將要輸出的數(shù)據(jù)依次寫入該緩沖區(qū),而打印機(jī)則從該緩沖區(qū)中取走數(shù)據(jù)打印。該緩沖區(qū)應(yīng)該是一個(B)結(jié)構(gòu)。A.堆棧B.隊(duì)列C.數(shù)組D.線性表26、棧和隊(duì)列都是(A)。B.鏈?zhǔn)酱鎯Φ姆蔷€性結(jié)構(gòu)A.鏈?zhǔn)酱鎯Φ木€性結(jié)構(gòu)C.限制存取點(diǎn)的線性結(jié)構(gòu)D.限制存取點(diǎn)的非線性結(jié)構(gòu)27、在一個鏈隊(duì)列中,假定front和rear分別為隊(duì)頭指針和隊(duì)尾指針,刪除

33、一個結(jié)點(diǎn)的操作是(C)。A.frontfront-nextB-rearrear-nextC-rear-nextfrontDfront-nextrear28、隊(duì)和棧的主要區(qū)別是(D)oA.邏輯結(jié)構(gòu)不同B.存儲結(jié)構(gòu)不同C.所包含的運(yùn)算個數(shù)不同D.限定插入和刪除的位置不同二、填空題1、設(shè)棧S和隊(duì)列Q的初始狀態(tài)為空,元素el,e2,e3,e4,e5,e6依次通過棧S,一個元素出棧后即進(jìn)入隊(duì)列Q,若6個元素出隊(duì)的序列是e2,e4,e3,e6,e5,el,則棧的容量至少應(yīng)該是。答案:32、一個循環(huán)隊(duì)列Q的存儲空間大小為M,其隊(duì)頭和隊(duì)尾指針分別為front和rear,則循環(huán)隊(duì)列中元素的個數(shù)為:。答案:rea

34、r-front+M%M3、在具有n個元素的循環(huán)隊(duì)列中,隊(duì)滿時具有個元素。答案:n-14、設(shè)循環(huán)隊(duì)列的容量為70,現(xiàn)經(jīng)過一系列的入隊(duì)和出隊(duì)操作后,front為20,rear為11,則隊(duì)列中元素的個數(shù)為。答案:615、已知循環(huán)隊(duì)列的存儲空間大小為20,且當(dāng)前隊(duì)列的頭指針和尾指針的值分別為8和3,且該隊(duì)列的當(dāng)前的長度為一15。三、判斷題1、棧和隊(duì)列都是受限的線性結(jié)構(gòu)。2、在單鏈表中,要訪問某個結(jié)點(diǎn),只要知道該結(jié)點(diǎn)的地址即可;因此,單鏈表是一種隨機(jī)存取結(jié)構(gòu)。3、以鏈表作為棧的存儲結(jié)構(gòu),出棧操作必須判別??盏那闆r。四、程序分析填空題1、已知棧的基本操作函數(shù):intInitStackSqStack*S;/

35、構(gòu)造空棧intStackEmptySqStack*S;判斷棧空intPushSqStack*S,ElemTypee;入棧intPopSqStack*S,ElemType*e;出棧函數(shù)conversion實(shí)現(xiàn)十進(jìn)制數(shù)轉(zhuǎn)換為八進(jìn)制數(shù),請將函數(shù)補(bǔ)充完整。voidconversionInitStackS;scanfd”,&N;whileNNN/8;while(2)PopS,&e;printfu%dn,e;/conversion答案:(l)PushS,N%8(2)IStackEmptyS2、寫出算法的功能。intfunctionSueue*Q,ElemType*eifQ-frontQ-r

36、earreturnERROR:*eQ-baseQ-front;Q-frontQ-front+l%SIZE;returnOK;3、閱讀算法f2,并回答下列問題:(1)設(shè)隊(duì)列Q(l,3,5,2,4,6)。寫出執(zhí)行算法f2后的隊(duì)列Q;簡述算法f2的功能。voidf2Queue*QDataTypee;ifJQueueEmptyQeDeQueueQ;f2Q;EnQueueQ,e;答案:6,4,2,5,3,1將隊(duì)列倒置五、綜合題1、假設(shè)以帶頭結(jié)點(diǎn)的循環(huán)鏈表表示隊(duì)列,并且只設(shè)一個指針指向隊(duì)尾結(jié)點(diǎn),但不設(shè)頭指針,請寫出相應(yīng)的入隊(duì)列算法(用函數(shù)實(shí)現(xiàn))。答案:voidEnQueueLnode*rear,ElemT

37、ypeeLnode*new;NewLnode*mallocsizeofLnode;If!newreturnERROR:new-datae;new-nextrear-next;rear-nextnew;rearnew;2、已知Q是一個非空隊(duì)列,S是一個空棧。編寫算法,僅用隊(duì)列和棧的ADT函數(shù)和少量工作變量,將隊(duì)列Q的所有元素逆置。棧的ADT函數(shù)有:voidmakeEmptySqStacks;置空棧voidpushSqStacks,ElemTypee;兀素e入棧ElemTypepopSqStacks;出棧,返回棧頂兀素intisEmptySqStacks;判斷棧空隊(duì)列的ADT函數(shù)有:voidenQ

38、ueueQueueq,ElemTypee;兀素e入隊(duì)ElemTypedeQueueQueueq;出隊(duì),返回隊(duì)頭兀素intisEmptyQueueq;判斷隊(duì)空答案:voidQueuelnventQueueqElemTypex;makeEmptySqStacks;while!isEmptyQueueqxdeQueueQueueq;pushSqStacks,ElemTypex;while!isEmpt)6qStacksxpopSqStacks;enQueueQueueq,ElemTypex;3、對于一個棧,給出輸入項(xiàng)A,B,C,D,如果輸入項(xiàng)序列為A,B,C,D,試給出全部可能的輸出序列。答案:出棧

39、的可能序列:ABCDABDCACDBACBDADCBBACDBADCBCADBCDACBDACBADCDBADCBA第四章串一、選擇題1、設(shè)有兩個串S1和S2,求串S2在S1中首次出現(xiàn)位置的運(yùn)算稱作(C)oA.連接B.求子串C.模式匹配D.判斷子串2、已知串S'aaab*,則next數(shù)組值為(A)。A.0123B.1123C.1231D.12113、串與普通的線性表相比較,它的特殊性體現(xiàn)在(C)。A.順序的存儲結(jié)構(gòu)B.鏈?zhǔn)酱鎯Y(jié)構(gòu)C.數(shù)據(jù)元素是一個字符D.數(shù)據(jù)元素任意4、設(shè)串長為n,模式串長為明則KMP算法所需的附加空間為(A)oA.0mB. OnC.0m*nD.0nlog2m5、空串

40、和空格串(B)oA.相同B.不相同C.可能相同D.無法確定6、與線性表相比,串的插入和刪除操作的特點(diǎn)是(A)oA.通常以串整體作為操作對象B.需要更多的輔助空間C.算法的時間復(fù)雜度較高D.涉及移動的元素更多7、設(shè)SUBSTRS,i,k是求S中從第i個字符開始的連續(xù)k個字符組成的子串的操作,則對于S'Beijing&Nanjing',SUBSTRS,4,5(B)。A.'ijing'B.C.'inga'D.ing&N'二、判斷題()1、造成簡單模式匹配算法BF算法執(zhí)行效率低的原因是有回溯存在。(J)2、KMP算法的最大特點(diǎn)是指

41、示主串的指針不需要回溯。(V)3、完全二叉樹某結(jié)點(diǎn)有右子樹,則必然有左子樹。三、填空題1、求子宙在主串中首次出現(xiàn)的位置的運(yùn)算稱為模式匹配。2、設(shè)s'I?AM?A?TEACHER,其長度是一14_。3、兩個串相等的充分必要條件是兩個串的長度相等且對應(yīng)位置字符相同。四、程序填空題1、函數(shù)kmp實(shí)現(xiàn)串的模式匹配,請?jiān)诳崭裉帉⑺惴ㄑa(bǔ)充完整。intkmpsqstring*s,sqstring*t,intstart,intnextintistart-1,jO;whileis-len&&jt-lenifj-1Is-datait-dataj2、i+;j+;elsej:ifjt一lenr

42、eturn;elsereturn-1;函數(shù)實(shí)現(xiàn)串的模式匹配算法,請?jiān)诳崭裉帉⑺惴ㄑa(bǔ)充完整intindex_bfsqstring*s,sqstring水t,intstartintistartT,jO;whileis-;jO;len&&jt-lenifs-dataZiLt-dataji+;j+;elseii-j+1ifjt-lenreturni-tlen+1;elsereturnAlistDelete*/3、寫出下面算法的功能。intfunctionSqString*sl,SqString*s2inti;foriO;isl-length&&isl-length;i+

43、ifs-dataLiJ!s2-datailreturnsl-datai-s2-datai:returnsl-length-s2-length;答案:串比較算法4、寫出算法的功能。intfunsqstring*s,sqstring水t,intstartintistart-1,jO;whileis-len&&jt-lenifs-dataiLt-dataji+;j+;elseii-j+1;jO;ifjt-lenreturni-t-len+1;elsereturnT;答案:串的模式匹配算法第六章樹一、選擇題1、 二叉樹的深度為k,則二叉樹最多有(C)個結(jié)點(diǎn)。A.2kB.2k_lC.2k

44、_lD.2k_l2、 用順序存儲的方法,將完全二義樹中所有結(jié)點(diǎn)按層逐個從左到右的順序存放在一維數(shù)組RE1.N中,若結(jié)點(diǎn)Ri有右孩子,則其右孩子是(B)oA.R2i-1B.R2i+1C.R2iD.R2/i3、 設(shè)a,b為一棵二叉樹上的兩個結(jié)點(diǎn),在中序遍歷時,d在b前面的條件是(B)oA.a在b的右方B.a在b的左方C.d是b的祖先D.a是b的子孫4、 設(shè)一棵二義樹的中序遍歷序列:badce,后序遍歷序列:bdeca,則二叉樹先序遍歷序列為()。A.adbceB.decabC.debacD.abode5、 在一棵具有5層的滿二叉樹中結(jié)點(diǎn)總數(shù)為(A)。A.31B.32C33D.166、 由二義樹的前序和后序遍歷序列(B)惟一確定這棵二義樹。A.能B.不能7、某二義樹的中序序列為ABCDEFG,后序序列為BDCAFGE,則其左子樹中結(jié)點(diǎn)數(shù)目為(C)oA.3B.2C.4D.58、 若以4,5,6,7,8作為權(quán)值構(gòu)造哈夫曼樹,則該樹的帶權(quán)路徑長度為(C)。A.67B.68C.69D.709、 將一棵有100個結(jié)點(diǎn)的完全二義樹從根這一層開始,每一層上從左到右依次對結(jié)點(diǎn)進(jìn)行編號,根結(jié)點(diǎn)的編號為1,

溫馨提示

  • 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

提交評論