2023年電大數(shù)據(jù)結(jié)構(gòu)(本)期末綜合練習(xí)(12月)_第1頁
2023年電大數(shù)據(jù)結(jié)構(gòu)(本)期末綜合練習(xí)(12月)_第2頁
2023年電大數(shù)據(jù)結(jié)構(gòu)(本)期末綜合練習(xí)(12月)_第3頁
2023年電大數(shù)據(jù)結(jié)構(gòu)(本)期末綜合練習(xí)(12月)_第4頁
2023年電大數(shù)據(jù)結(jié)構(gòu)(本)期末綜合練習(xí)(12月)_第5頁
已閱讀5頁,還剩39頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)結(jié)構(gòu)(本)期末期末綜合練習(xí)一一、單項選擇題1.數(shù)據(jù)的物理結(jié)構(gòu)()。A.與數(shù)據(jù)的邏輯結(jié)構(gòu)無關(guān)B.僅僅涉及數(shù)據(jù)元素的表達(dá)C.只涉及數(shù)據(jù)元素間關(guān)系的表達(dá)D.涉及數(shù)據(jù)元素的表達(dá)和關(guān)系的表達(dá)2.數(shù)據(jù)元素是數(shù)據(jù)的基本單位,它()。A.只能有一個數(shù)據(jù)項組成B.至少有二個數(shù)據(jù)項組成C.可以是一個數(shù)據(jù)項也可以由若干個數(shù)據(jù)項組成D.至少有一個數(shù)據(jù)項為指針類型3.從n個數(shù)中選取最大元素,()。A.基本操作是數(shù)據(jù)元素間的互換B.算法的時間復(fù)雜度是O(n2)C.算法的時間復(fù)雜度是O(n)D.需要進(jìn)行(n+1)次數(shù)據(jù)元素間的比較4.線性表的順序結(jié)構(gòu)中,()。A.邏輯上相鄰的元素在物理位置上不一定相鄰B.數(shù)據(jù)元素是不能隨機訪問的C.邏輯上相鄰的元素在物理位置上也相鄰D.進(jìn)行數(shù)據(jù)元素的插入、刪除效率較高5.以下表中可以隨機訪問的是()。A.單向鏈表B.雙向鏈表C.單向循環(huán)鏈表D.順序表6.帶頭結(jié)點的單向鏈表為空的判斷條件是()(設(shè)頭指針為head)。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL7.設(shè)順序存儲的線性表長度為n,對于刪除操作,設(shè)刪除位置是等概率的,則刪除一個元素平均移動元素的次數(shù)為()。A.(n+1)/2B.nC.2nD.n-i8.線性結(jié)構(gòu)中數(shù)據(jù)元素的位置之間存在()的關(guān)系。A.一對一B.一對多C.多對多D.每一個元素都有一個直接前驅(qū)和一個直接后繼9.設(shè)top是一個鏈棧的棧頂指針,棧中每個結(jié)點由一個數(shù)據(jù)域data和指針域next組成,設(shè)用x接受棧頂元素,則出棧操作為()。A.x=top->data;top=top->next;B.top=top->next;x=top->data;C.x=top->next;top=top->data;D.top->next=top;x=top->data;10.設(shè)順序存儲的線性表長度為n,要刪除第i個元素,按課本的算法,當(dāng)i=()時,移動元素的次數(shù)為3A.3B.n/2C.n-3D11.以下說法對的的是()。A.隊列是后進(jìn)先出B.棧的特點是后進(jìn)后出C.棧的刪除和插入操作都只能在棧頂進(jìn)行D.隊列的刪除和插入操作都只能在隊頭進(jìn)行12.以下說法不對的的是()。A.棧的特點是后進(jìn)先出B.隊列的特點是先進(jìn)先出C.棧的刪除操作在棧底進(jìn)行,插入操作在棧頂進(jìn)行D.隊列的插入操作在隊尾進(jìn)行,刪除操作在隊頭進(jìn)行13.串函數(shù)StrCmp(“abA”,”aba”)的值為()。A.1B.0C.“abAaba”D14.一個棧的進(jìn)棧序列是a,b,c,d,則棧的不也許的出棧序列是()。A.adbcB.bcadC.cbadD.dcba15.設(shè)有一個12階的對稱矩陣A,采用壓縮存儲方式將其下三角部分以行序為主序存儲到一維數(shù)組b中(矩陣A的第一個元素為a1,1,數(shù)組b的下標(biāo)從1開始),則矩陣A中第4行的元素在數(shù)組b中的下標(biāo)i一定有()。A.7≤i≤10B.11≤i≤15C.9≤i≤14D.6≤i≤16.已知一個圖的邊數(shù)為m,則該圖的所有頂點的度數(shù)之和為()。A.2mB.mC.2m+1D.m/217.設(shè)有一個帶頭結(jié)點的鏈隊列,隊列中每個結(jié)點由一個數(shù)據(jù)域data和指針域next組成,front和rear分別為鏈隊列的頭指針和尾指針,要執(zhí)行出隊操作,用x保存出隊元素的值,p為指向結(jié)點類型的指針,可執(zhí)行如下操作:p=front->next;x=p->dat(yī)a;然后執(zhí)行()。A.front=p->next;B.front->next=p->next;C.front=p;D.front->next=p;18.以下說法不對的的是()。A.連通圖G一定存在生成樹B.連通圖G的生成樹中一定包含G的所有頂點C.連通圖G的生成樹中不一定包含G的所有邊D.連通圖G的生成樹可以是不連通的19.散列查找的原理是()。A.在待查記錄的關(guān)鍵字值與該記錄的存儲位置之間建立擬定的相應(yīng)關(guān)系B.按待查記錄的關(guān)鍵字有序的順序方式存儲C.按關(guān)鍵字值的比較進(jìn)行查找D.基于二分查找的方法20.空串的長度為()。A.0B.1C.2D21.排序過程中,每一趟從無序子表中將一個待排序的記錄按其關(guān)鍵字的大小放置到已經(jīng)排好序的子序列的適當(dāng)位置,直到所有排好序為止,該排序算法是()。A.選擇排序B.快速排序C.冒泡排序D.直接插入排序22.采用順序查找法對長度為n的線性表進(jìn)行查找(不采用表尾設(shè)監(jiān)視哨的方法),最壞的情況下要進(jìn)行()次元素間的比較。A.n+2B.nC.n-1D.n/223.設(shè)有一個10階的對稱矩陣A,采用壓縮存儲方式將其下三角部分以行序為主序存儲到一維數(shù)組b中。(矩陣A的第一個元素為a1,1,數(shù)組b的下標(biāo)從1開始),則矩陣元素a5,3相應(yīng)一維數(shù)組b的數(shù)組元素是()。A.b[18]B.b[8]C.b[13]D.b[10]24.如圖1若從頂點a出發(fā)按廣度優(yōu)先搜索法進(jìn)行遍歷,則也許得到的頂點序列為()。ababecdhgfB.aebcghdfC.aedfbcghD.abecdfgh圖125.已知如圖2所示的一個圖,若從頂點a出發(fā),按深度優(yōu)先搜索法進(jìn)行遍歷,則也許得到的一種頂點序列為()。A.abecdfB.a(chǎn)cfebdC.a(chǎn)ebcfdD.a(chǎn)edfcbbbdfeca圖226.一棵哈夫曼樹總共有23個結(jié)點,該樹共有()個葉結(jié)點(終端結(jié)點)。A.10B.13C.11二、填空題1.通常數(shù)據(jù)的邏輯結(jié)構(gòu)涉及集合、線性、____、____四種類型。2.通??梢园涯吵鞘兄懈鞴徽军c間的線路圖抽象成____(dá)____(dá)結(jié)構(gòu)。3.設(shè)有一個單向鏈表,結(jié)點的指針域為next,頭指針為head,p指向尾結(jié)點,為了使該單向鏈表改為單向循環(huán)鏈表,可用語句____(dá)__(dá)__。4.設(shè)有一個單向循環(huán)鏈表,頭指針為head,鏈表中結(jié)點的指針域為next,p指向尾結(jié)點的直接前驅(qū)結(jié)點,若要刪除尾結(jié)點,得到一個新的單向循環(huán)鏈表,可執(zhí)行操作__(dá)______(dá)。5.循環(huán)隊列的隊頭指針為f,隊尾指針為r,當(dāng)___(dá)___(dá)__時表白隊列已空。6.在一個鏈隊中,f和r分別為隊頭和隊尾指針,隊結(jié)點的指針域為next,則插入一個s所指結(jié)點的操作為__(dá)____(dá)__;r=s;7.設(shè)有一個鏈棧,棧頂指針為hs,現(xiàn)有一個s所指向的結(jié)點要入棧,則可執(zhí)行操作________(dá)和hs=s;8.循環(huán)隊列的隊頭指針為f,隊尾指針為r,當(dāng)_____(dá)時表白隊列為空。9.在一個鏈隊中,f和r分別為隊頭和隊尾指針,隊結(jié)點的指針域為next,則插入一個s所指結(jié)點的操作為_____(dá)__(dá)_;r=s;10.“A”在存儲時占__(dá)____(dá)__個字節(jié)。11.串的兩種最基本的存儲方式分別是_______和_____(dá)___。12.一棵二叉樹沒有單分支結(jié)點,有6個葉結(jié)點,則該樹總共有______(dá)__(dá)個結(jié)點。13.一棵二叉樹中順序編號為i的結(jié)點,若它存在左、右孩子,則左、右孩子編號分別為_____(dá)___(dá)、________。14.按照二叉樹的遞歸定義,對二叉樹遍歷的常用算法有____、____、____三種。15.兩個串相等的充足必要條件是。16.把數(shù)據(jù)存儲到計算機中,并具體體現(xiàn)數(shù)據(jù)之間的邏輯結(jié)構(gòu)稱為__(dá)______結(jié)構(gòu)。17.一棵二叉樹葉結(jié)點(終端結(jié)點)數(shù)為5,單分支結(jié)點數(shù)為2,該樹共有______個結(jié)點。18.如圖3所示的二叉樹,其后序遍歷序列為。eefgibachd圖319.根據(jù)搜索方法的不同,圖的遍歷有____(dá)、___(dá)_兩種方法。20.二叉樹為二叉排序的充足必要條件是其任一結(jié)點的值均大于其左孩子的值、小于其右孩子的值。這種說法是__________的。(回答對的或不對的)21.一個有序表{3,4,10,14,34,43,46,64,75,78,90,96,130}用折半查找法查找值為90的結(jié)點,經(jīng)______(dá)__次比較后查找成功。三、綜合題1.(1)已知某二叉樹的后序遍歷序列是debca,中序遍歷序列是dbeac,試畫出該二叉樹(2)若上述二叉樹的各個結(jié)點的字符分別代表不同的整數(shù)(其中沒有相等的),并恰好使該樹成為一棵二叉排序樹,試給出a、b、c、d、e的大小關(guān)系。(3)給出該樹的前序遍歷序列2.(1)一組記錄的關(guān)鍵字序列為{45,40,65,43,35,95},寫出運用快速排序的方法,以第一個記錄為基準(zhǔn)得到的一趟劃分的結(jié)果(規(guī)定給出一趟劃分中每次掃描和互換的結(jié)果)(2)對序列{45,40,65,43,35,95}運用直接插入排序,寫出逐次插入過程(從第一個元素一直到第六個元素)。3.(1)設(shè)有一個整數(shù)序列{40,28,6,72,100,3,54}依次取出序列中的數(shù),構(gòu)造一棵二叉排序樹(2)對上述二叉排序樹,在等概率條件下,求成功查找的平均查找長度4.(1)設(shè)有查找表{5,14,2,6,18,7,4,16,3},依次取表中數(shù)據(jù),構(gòu)造一棵二叉排序樹.(2)說明如何通過序列的二叉排序樹得到相應(yīng)序列的排序結(jié)果。5.(1)運用篩選過程把序列{42,82,67,102,16,32,57,52}建成堆(小根堆),畫出相應(yīng)的完全二叉樹(不規(guī)定中間過程)(2)寫出對上述堆相應(yīng)的完全二叉樹進(jìn)行中序遍歷得到的序列四、程序填空題1.以下函數(shù)在a[0]到a[n-1]中,用折半查找算法查找關(guān)鍵字等于k的記錄,查找成功返回該記錄的下標(biāo),失敗時返回-1,完畢程序中的空格typedefstruct{intkey;……}NODE;intBinary_Search(NODEa[],intn,intk){intlow,mid,high;low=0;high=n-1;while(___(1)__(dá)___(dá)){mid=(low+high)/2;if(a[mid].key==k)return__(2)______;?elseif(___(3)___(dá)__(dá))low=mid+1;?else__(4)____(dá)__;?}___(5)___(dá)__;?}2.以下函數(shù)為鏈棧的進(jìn)棧操作,x是要進(jìn)棧的結(jié)點的數(shù)據(jù)域,top為棧頂指針structnode{ElemTypedata;structnode*next;};structnode*top;voidPush(ElemTypex){structnode*p;p=(structnode*)malloc(___(dá)(1)__(dá)__(dá)_);p->data=x;___(2)____(dá)_;_____(3)___;}3.以下函數(shù)為鏈隊列的入隊操作,x為要入隊的結(jié)點的數(shù)據(jù)域的值,front、rear分別是鏈隊列的隊頭、隊尾指針structnode{ElemTypedat(yī)a;structnode*next;};structnode*front,*rear;voidInQueue(ElemTypex){structnode*p;p=(structnode*)___(1)__(dá)___;p->data=x;p->next=NULL;___(dá)(2)_____;rear=__(dá)_(3)_____;}期末綜合練習(xí)一答案一、單項選擇題1.D2.C3.C4.C5.D6.B7.A8.A9.A10.C11.C12.C13.D14.A15.A16.A17.B18.D19.A20.A21.D22.B23.C24.D25.D26.D二、填空題1.樹形;圖狀2.圖狀3.p->next=head;4.p->next=head;5.r=f6.r->next=s7.s->next=hs;8.r==f9.r->next=s10.211.順序存儲鏈?zhǔn)酱鎯?2.1113.2i和2i+114.先序;中序;后序15.串長度相等且相應(yīng)位置的字符相等16.物理(存儲)17.1118.gdbeihfca19.深度優(yōu)先搜索遍歷廣度優(yōu)先搜索遍歷20.錯誤21.4三、綜合應(yīng)用題(每小題10分,共30分)abceabced(2)d<b<e<a<c(3)abdec2.(1)454065433595354065433595354065436595354043436595354043456595(2)4045654335954043456535953540434565954028723100544028723100546(2)ASL=(1x1+2x2+3x3+4)/7=18/74.(1)22461673185145(2)中序遍歷5.16423252571642325257678242826752573216102102初始樹堆102初始樹堆(2)102,52,42,82,16,67,32,57四、程序填空題1.(1)low<=high(2)mid(3)a[mid].key<k;(4)high=mid-1(5)return-1;2.(1)low<=high(2)mid(3)a[mid].key<k;(4)high=mid-1(5)return-1;3.(1)sizeof(structnode)(2)p->next=top(3)top=p4.(1)malloc(sizeof(structnode))(2)rear->next=p(3)p期末綜合練習(xí)二一、單項選擇題1.()是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的子集。A.數(shù)據(jù)元素B.數(shù)據(jù)對象C.?dāng)?shù)據(jù)結(jié)構(gòu)D.?dāng)?shù)據(jù)項2.同一種邏輯結(jié)構(gòu)()。A.只能有唯一的存儲結(jié)構(gòu)B.可以有不同的存儲結(jié)構(gòu)C.只能表達(dá)某一種數(shù)據(jù)元素之間的關(guān)系D.以上三種說法均不對的3.設(shè)鏈表中的結(jié)點是NODE類型的結(jié)構(gòu)體變量,且有NODE*p;為了申請一個新結(jié)點,并由p指向該結(jié)點,可用以下語句()。A.p=(NODE*)malloc(sizeof(NODE));B.p=(*NODE)malloc(sizeof(NODE));C.p=(NODE)malloc(sizeof(p));D.p=(NODE*)malloc(sizeof(p));4.鏈表所具有的特點是()。A.可以隨機訪問任一結(jié)點B.占用連續(xù)的存儲空間C.插入刪除元素的操作不需要移動元素結(jié)點D.可以通過下標(biāo)對鏈表進(jìn)行直接訪問5.設(shè)順序存儲的線性長度為n,要在第i個元素之前插入一個新元素,按課本的算法當(dāng)i=()時,移動元素次數(shù)為2A.n/2B.nC.1D.n-16.數(shù)據(jù)的物理結(jié)構(gòu)()。A.與數(shù)據(jù)的邏輯結(jié)構(gòu)無關(guān)B.僅僅涉及數(shù)據(jù)元素的表達(dá)C.只涉及數(shù)據(jù)元素間關(guān)系的表達(dá)D.涉及數(shù)據(jù)元素的表達(dá)和關(guān)系的表達(dá)7.一個棧的進(jìn)棧序列是1,2,3,4,則棧的不也許的出棧序列是()(進(jìn)出棧操作可以交替進(jìn)行)A.3,2,4,1B.1,4,2,3C.4,3,2,1D.3,2,1,48.線性結(jié)構(gòu)中數(shù)據(jù)元素的位置之間存在()的關(guān)系。A.一對一B.一對多C.多對多D.每一個元素都有一個直接前驅(qū)和一個直接后繼9.設(shè)有一個帶頭結(jié)點的鏈隊列,隊列中每個結(jié)點由一個數(shù)據(jù)域data和指針域next組成,front和rear分別為鏈隊列的頭指針和尾指針。設(shè)p指向要入隊的新結(jié)點(該結(jié)點已被賦值),則入隊操作為()。A.rear->next=p;rear=p;B.rear->next=p;p=rear;C.p=rear->next;rear=p;D.rear=p;rear->next=p;10.以下表中可以隨機訪問的是()。A.單向鏈表B.雙向鏈表C.單向循環(huán)鏈表D.順序表11.以下說法不對的的是()。A.順序棧中,棧滿時再進(jìn)行進(jìn)棧操作稱為“上溢”B.順序棧中,??諘r再作出棧棧操作稱為“下溢”C.順序隊列中,當(dāng)尾指針已經(jīng)超越隊列存儲空間的上界,則一定是隊列已滿D.順序隊列中,隊列的頭指針和尾指針均超越隊列存儲空間的上界,則隊列已空12.算法的時間復(fù)雜度與()有關(guān)。A.所使用的計算機B.與計算機的操作系統(tǒng)C.與算法自身D.與數(shù)據(jù)結(jié)構(gòu)13.設(shè)有一個20階的對稱矩陣A,采用壓縮存儲方式,將其下三角部分以行序為主序存儲到一維數(shù)組中(矩陣A的第一個元素為a11,數(shù)組b的下標(biāo)從1開始),則矩陣元素a8,5在一維數(shù)組b中的下標(biāo)是()。A.30B.28C.40D14.設(shè)有一個長度為n的順序表,要刪除第i個元素需移動元素的個數(shù)為()。A.n-i+1B.n-iC.n-i-1D.i15.深度為5的完全二叉樹第5層上有4個結(jié)點,該樹一共有()個結(jié)點。A.28B.30C.31D16.在一個單鏈表中,p、q分別指向表中兩個相鄰的結(jié)點,且q所指結(jié)點是p所指結(jié)點的直接后繼,現(xiàn)要刪除q所指結(jié)點,可用的語句是()。A.p=q->nextB.p->next=qC.p->next=qnextD.q->next=NULL17.已知一個圖的所有頂點的度數(shù)之和為m,則m一定不也許是()。A.4B.8C.12D18.從一個棧頂指針為top的鏈棧中刪除一個結(jié)點時,用變量x保存被刪結(jié)點的值,則執(zhí)行()。A.x=top->data;top=top->next;B.x=top->data;C.top=top->next;x=top->data;D.top=top->next;x=dat(yī)a;19.以下說法對的的是()。A.連通圖G的生成樹中可以包含回路B.連通圖G的生成樹可以是不連通的C.連通圖G的生成樹一定是唯一的D.連通圖G的生成樹一定是連通而不包含回路的20.在一個鏈隊中,假設(shè)f和r分別為隊頭和隊尾指針,則刪除一個結(jié)點的運算為()。A.r=f->next;B.r=r->next;C.f=f->next;D.f=r->next;21.對n個元素進(jìn)行冒泡排序,通常要進(jìn)行n-1趟冒泡,在第j趟冒泡中共要進(jìn)行()次元素間的比較。A.jB.j-1C.n-jD22.一個棧的進(jìn)棧序列是a,b,c,d,e,則棧的不也許輸出序列是()(進(jìn)棧出棧可以交替進(jìn)行)。A.dceabB.edcbaC.decbaD.a(chǎn)bcde23.在排序過程中,可以有效地減少一趟排序過程中元素間的比較次數(shù)的算法是()。A.冒泡B.選擇C.直接插入D.折半插入24.有一個長度為10的有序表,按折半查找對該表進(jìn)行查找,在等概率情況下查找成功的平均比較次數(shù)為()。A.26/10B.29/1025.如圖1若從頂點a出發(fā)按深度優(yōu)先搜索法進(jìn)行遍歷,則也許得到的頂點序列為()。abecabecdfB.abedcfC.acebdfD.a(chǎn)cfbde圖126.排序算法中,從未排序序列中依次取出元素與已排序序列(初始為空)中的元素進(jìn)行比較(規(guī)定比較次數(shù)盡量少),然后將其放入已排序序列的對的位置的方法是()。A.冒泡B.直接插入C.折半插入D.選擇排序27.一棵哈夫曼樹有n個葉子結(jié)點(終端結(jié)點),該樹總共有()個結(jié)點。A.2n-2B.2n-1C.2nD.228.設(shè)有一個10階的對稱矩陣A,采用壓縮存儲的方式,將其下三角部分以行序為主存儲到一維數(shù)組B中(數(shù)組下標(biāo)從1開始),則矩陣中元素A8,5在一維數(shù)組B中的下標(biāo)是()。A.33B.32C.8529.數(shù)據(jù)的()結(jié)構(gòu)與所使用的計算機無關(guān)。A.邏輯B.物理C.存儲D.邏輯與存儲30.在一個無向圖中,所有頂點的度數(shù)之和等于邊數(shù)的()倍。A.3B.2.5C二、填空題1.通??梢园岩槐揪哂胁煌鹿?jié)的書的目錄結(jié)構(gòu)抽象成___(dá)_____結(jié)構(gòu)。2.棧和隊列的操作特點分別是___(dá)____和______(dá)__。3.要在一個單向鏈表中p所指向的結(jié)點之后插入一個s所指向的新結(jié)點,若鏈表中結(jié)點的指針域為next,可執(zhí)行_____(dá)__(dá)_和p->next=s;的操作。4.結(jié)構(gòu)中的數(shù)據(jù)元素存在多對多的關(guān)系稱為__(dá)____(dá)__結(jié)構(gòu)。5.設(shè)有一個非空的鏈棧,棧頂指針為hs,要進(jìn)行出棧操作,用x保存出棧結(jié)點的值,棧結(jié)點的指針域為next,則可執(zhí)行x=hs->data;__(dá)___(dá)___。6.根據(jù)數(shù)據(jù)元素間關(guān)系的不同特性,通??煞譃榧?、線性、、四類基本結(jié)構(gòu)。7.在一個不帶頭結(jié)點的非空鏈隊中,f和r分別為隊頭和隊尾指針,隊結(jié)點的數(shù)據(jù)域為data,指針域為next,若要進(jìn)行出隊操作,并用變量x存放出隊元素的數(shù)據(jù)值,則相關(guān)操作為x=f->dat(yī)a;________。8.規(guī)定在n個數(shù)據(jù)元素中找其中值最大的元素,設(shè)基本操作為元素間的比較。則比較的次數(shù)和算法的時間復(fù)雜度分別為_______(dá)_和________。9.循環(huán)隊列的最大存儲空間為MaxSize=8,采用少用一個元素空間以有效的判斷棧空或棧滿,若隊頭指針front=4,則當(dāng)隊尾指針rear=______(dá)__時,隊列為空,當(dāng)rear=________時,隊列有6個元素。10.稀疏矩陣存儲時,采用一個由____、____、____3部分信息組成的三元組唯一擬定矩陣中的一個非零元素。11.在二叉樹的鏈?zhǔn)酱鎯Y(jié)構(gòu)中,通常每個結(jié)點中設(shè)立三個域,它們是值域、。12.一棵二叉樹順序編號為6的結(jié)點(樹中各結(jié)點的編號與等深度的完全二叉中相應(yīng)位置上結(jié)點的編號相同),若它存在右孩子,則右孩子的編號為______(dá)__。13.向一個棧頂指針為h的鏈棧中插入一個s所指結(jié)點時,可執(zhí)行s->next=h;和___(dá)___(dá)__。14.在一個鏈隊中,設(shè)f和r分別為隊頭和隊尾指針,則插入s所指結(jié)點的操作為__(dá)____(dá)__和r=s;(結(jié)點的指針域為next)15.如圖2所示的二叉樹,其前序遍歷序列為___(dá)_____(dá)_。ggfabdec圖216.設(shè)有一棵深度為4的完全二叉樹,第四層上有5個結(jié)點,該樹共有________(dá)_個結(jié)點。(根所在結(jié)點為第1層)17.在隊列的順序存儲結(jié)構(gòu)中,當(dāng)插入一個新的隊列元素時,指針的值增1,當(dāng)刪除一個元素隊列時,指針的值增1。18.對稀疏矩陣進(jìn)行壓縮存儲,矩陣中每個非零元素相應(yīng)的三元組涉及該元素的___(dá)____、______(dá)_和_______三項信息。19.循環(huán)隊列的引入,目的是為了克服。20.在對一組記錄(55,39,97,22,16,73,65,47,88)進(jìn)行直接插入排序時,當(dāng)把第7個記錄65插入到有序表時,為尋找插入位置需比較___(dá)______(dá)次。三、綜合題1.(1)設(shè)head1和p1分別是不帶頭結(jié)點的單向鏈表A的頭指針和尾指針,head2和p2分別是不帶頭結(jié)點的單向鏈表B的頭指針和尾指針,若要把B鏈表接到A鏈表之后,得到一個以head1為頭指針的單向循環(huán)鏈表,寫出其中兩個關(guān)鍵的賦值語句(不用完整程序,結(jié)點的鏈域為next)。(2)單向鏈表的鏈域為next,設(shè)指針p指向單向鏈表中的某個結(jié)點,指針s指向一個要插入鏈表的新結(jié)點,現(xiàn)要把s所指結(jié)點插入p所指結(jié)點之后,某學(xué)生采用以下語句:p->next=s;s->next=p->next;這樣做對的嗎?若對的則回答對的,若不對的則說明應(yīng)如何改寫2.(1)以2,3,4,7,8,9作為葉結(jié)點的權(quán),構(gòu)造一棵哈夫曼樹(規(guī)定每個結(jié)點的左子樹根結(jié)點的權(quán)小于等于右子樹根結(jié)點的權(quán)),給出相應(yīng)權(quán)重值葉結(jié)點的哈夫曼編碼。(2)一棵哈夫曼樹有n個葉結(jié)點,它一共有多少個結(jié)點?簡述理由?3.(1)畫出對長度為10的有序表進(jìn)行折半查找的鑒定樹(以序號1,2,……10表達(dá)樹結(jié)點)(2)對上述序列進(jìn)行折半查找,求等概率條件下,成功查找的平均查找長度4.一組記錄的關(guān)鍵字序列為(46,79,56,38,40,84)(1)運用快速排序的方法,給出以第一個記錄為基準(zhǔn)得到的一次劃分結(jié)果(給出逐次互換元素的過程,規(guī)定以升序排列)(2)對上述序列用堆排序的方法建立大根堆,規(guī)定以二叉樹逐次描述建堆過程。5.(1)運用篩選法,把序列{37,77,62,97,11,27,52,47}建成堆(小根堆),畫出相應(yīng)的完全二叉樹(2)寫出對上述堆所相應(yīng)的二叉樹進(jìn)行前序遍歷得到的序列6.設(shè)查找表為(50,60,75,85,96,98,105,110,120,130)(1)說出進(jìn)行折半查找成功查找到元素120需要進(jìn)行多少次元素間的比較?(2)為了折半查找元素95,通過多少次元素間的比較才干擬定不能查到?(3)畫出對上述有序表進(jìn)行折半查找所相應(yīng)的鑒定樹(規(guī)定以數(shù)據(jù)元素作為樹結(jié)點)四、程序填空題1.以下函數(shù)為直接選擇排序算法,對a[1],a[2],…a[n]中的記錄進(jìn)行直接選擇排序,完畢程序中的空格typedefstruct{intkey;……}NODE;voidselsort(NODEa[],intn){ inti,j,k; NODEtemp;?for(i=1;i<=___(1)_____;i++) { ?k=i; ?for(j=i+1;j<=___(2)_____(dá);j++) ??if(a[j].key<a[k].key)__(3)______; if(i!=k)? { ??temp=a[i];?? ___(dá)(4)___(dá)__(dá); ? ___(dá)_(5)____; }?}}2.以下是用尾插法建立帶頭結(jié)點且有n個結(jié)點的單向鏈表的程序,結(jié)點中的數(shù)據(jù)域從前向后依次為1,2,3,……,n,完畢程序中空格部分。NODE*create(n){NODE*head,*p,*q;inti;p=(NODE*)malloc(sizeof(NODE));head=(1);(2);pnext=NULL;/*建立頭結(jié)點*/for(i=1;i<=n;i++){p=(3);pdata=i;pnext=NULL;qnext=(4);(5);}return(head);}3.以下程序是中序遍歷二叉樹的遞歸算法的程序,完畢程序中空格部分(樹結(jié)構(gòu)中左、右指針域分別為left和right,數(shù)據(jù)域data為字符型,BT指向根結(jié)點)。voidInorder(structBTreeNode*BT){if(BT!=NULL){(1);(2);(3);}}期末綜合練習(xí)二答案一、單項選擇題1.B2.B3.A4.C5.D6.D7.B8.A9.A10.D11.C12.C13.D14.B15.D16.C17.D18.A19.D20.C21.C22.A23.D24.B25.B26.C27.B28.A29.A30.D二、填空題1.樹形2.先進(jìn)后出、先進(jìn)先出3.s->next=p->next;4.圖狀(網(wǎng)狀)5.hs=hs->next;6.樹形圖狀7.f=f->next;8.n-1,O(n)9.4;210.行號;列號;非零元11.左指針右指針12.1313.h=s;14.r->next=s;15.abdefcg16.1217.尾頭18.行下標(biāo)、列下標(biāo)、非零元素值19.假上溢20.3三、綜合應(yīng)用題1.(1)p1->next=head2;p2->next=head1;(2)不對,s->next=p->next;p->next=s;2.3333(1)1518151879987998545432322:11103:11114:1107:008:019:10(2)2n-1個,由于非葉結(jié)點數(shù)比葉結(jié)點數(shù)少一個。5284952849631071(2)ASL=(1x1+2x2+3x4+4x3)/10=29/104.(1)初始序列46,79,56,38,40,8440,79,56,38,40,8440,79,56,38,79,8440,38,56,38,79,8440,38,56,56,79,8440,38,46,56,79,8456795679384084468479384046566567938404679384084845646圖3初始樹堆11372747初始樹堆11372747526277973777624752271197(2)11,37,47,97,77,27,62,526.(1)3次(2)4次967596759813010585501100512060圖5四、程序填空題1.(1)n-1(2)n(3)k=j(4)a[i]=a[k](5)a[k]=temp2.(1)p(2)q=p(3)(NODE*)malloc(sizeof(NODE))(4)p(5)q=p3.(1)Inorder(BT->left)(2)printf(“%c”,BT->data)(3)Inorder(BT->right)期末綜合練習(xí)三一、單項選擇題1.深度為5的完全二叉樹共有20個結(jié)點,則第5層上有()個結(jié)點(根所在結(jié)點為第一層)。A.3B.8C.5D2.在C語言中,順序存儲長度為3的字符串,需要占用()個字節(jié)。A.4B.3C3.已知一個圖的邊數(shù)為m,則該圖的所有頂點的度數(shù)之和為()。A.2mB.mC.2m+1D.m/24.串函數(shù)StrCat(yī)(a,b)的功能是進(jìn)行串()。A.比較B.復(fù)制C.賦值D.連接5.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機無關(guān)的是數(shù)據(jù)的()結(jié)構(gòu)。A.物理B.存儲C.邏輯與物理D.邏輯6.一棵有n個結(jié)點采用鏈?zhǔn)酱鎯Φ亩鏄渲?,共有?個指針域為空。A.n+1B.nC.n-1D.n-27.鏈表所具有的特點是()。A.可以隨機訪問任一結(jié)點B.占用連續(xù)的存儲空間C.插入刪除不需要移動元素結(jié)點D.可以通過下標(biāo)對鏈表進(jìn)行直接訪問8.設(shè)一棵哈夫曼樹共有n個非葉結(jié)點,則該樹有()個葉結(jié)點。A.nB.n+1C9.線性表只要以()方式存儲就能進(jìn)行折半查找。A.鏈接B.順序C.關(guān)鍵字有序的順序D.二叉樹10.從一個棧頂指針為top的鏈棧中刪除一個結(jié)點時,用變量x保存被刪結(jié)點的值,則執(zhí)行()。A.x=top->data;top=topnext;B.x=top->data;C.top=top->next;x=top->data;D.top=top->next;x=data;11.散列查找的原理是()。A.在待查記錄的關(guān)鍵字值與該記錄的存儲位置之間建立擬定的相應(yīng)關(guān)系B.按待查記錄的關(guān)鍵字有序的順序方式存儲C.按關(guān)鍵字值的比較進(jìn)行查找D.基于二分查找的方法12.一棵完全二叉樹共有5層,且第5層上有六個結(jié)點,該樹共有()個結(jié)點。A.30B.20C13.對n個元素進(jìn)行冒泡排序若某趟冒泡中只進(jìn)行了()次元素間的互換,則表白序列已經(jīng)排好序。A.1B.2C.0D14.在一個無向圖中,所有頂點的度數(shù)之和等于邊數(shù)的()倍。A.3B.2.5C15.排序過程中,每一趟從無序子表中將一個待排序的記錄按其關(guān)鍵字的大小放置到已經(jīng)排好序的子序列的適當(dāng)位置,直到所有排好序為止,該排序算法是()。A.直接插入排序B.快速排序C.冒泡排序D.選擇排序16.已知如圖1所示的一個圖,若從頂點V1出發(fā),按深度優(yōu)先搜索法進(jìn)行遍歷,則也許得到的一種頂點序列為()。A.V1V2V4V8V5V3V6V7B.V1V2V4V5V8V3V6V7C.V1V2V4V8V3V5V6V7D.V1V3V6V7V2V4V5V8V6V6V7V1V2V3V8V4V5圖117.在對一組元素(64,48,106,33,25,82,70,55,93)進(jìn)行直接插入排序時,當(dāng)進(jìn)行到要把第7個元素70插入到已經(jīng)排好序的子表時,為找到插入位置,需進(jìn)行()次元素間的比較(指由小到大排序)。A.6B.2C.3D18.已知如圖2所示的一個圖,若從頂點a出發(fā),按廣度優(yōu)先搜索法進(jìn)行遍歷,則也許得到的一種頂點序列為()。A.a(chǎn)bcedfB.a(chǎn)bcefdC.a(chǎn)ebcfdD.a(chǎn)cfdebbdbdfeca圖219.采用順序查找法對長度為n的線性表進(jìn)行查找(不采用表尾設(shè)監(jiān)視哨的方法),最壞的情況下要進(jìn)行()次元素間的比較。A.n+2B.nC.n-1D.n/220.對二叉排序樹進(jìn)行()遍歷,可以使遍歷所得到的序列是有序序列。A.按層次B.后序C.中序D.前序21.如圖3,若從頂點a出發(fā)按廣度優(yōu)先搜索法進(jìn)行遍歷,則也許得到的頂點序列為()。A.acebdgfB.a(chǎn)becdgfC.acfedgbD.abecfdgaabecdfg圖322.在有序表{2,4,7,14,34,43,47,64,75,80,90,97,120}中,用折半查找法查找值80時,經(jīng)()次比較后查找成功。A.4B.2C23.元素2,4,6,8按順序依次進(jìn)棧,則該棧的不也許輸出序列是()(進(jìn)棧出??梢越惶孢M(jìn)行)。A.8,6,4,2B.2,4,6,8C.4,2,8,6D.8,6,2,424.有一個長度為9的有序表,按折半查找對該表進(jìn)行查找,在等概率情況下查找成功的平均比較次數(shù)為()。A.25/10B.25/9C25.排序方法中,從未排序序列中挑選元素,并將其依次放入已排序序列(初始為空)的一端的方法,稱為()排序。A.歸并B.插入C.選擇D.快速26.排序算法中,從未排序序列中依次取出元素與已排序序列(初始為空)中的元素進(jìn)行比較(規(guī)定比較次數(shù)盡量少),然后將其放入已排序序列的對的位置的方法是()。A.冒泡B.直接插入C.折半插入D.選擇排序27.一棵哈夫曼樹總共有23個結(jié)點,該樹共有()個葉結(jié)點(終端結(jié)點)A.10B.13C.1128.一組記錄的關(guān)鍵字序列為(46,79,56,38,40,84),運用快速排序,以第一個關(guān)鍵字為分割元素,通過一次劃分后結(jié)果為()。A.40,38,46,79,56,84B.40,38,46,56,79,84C.40,38,46,84,56,79D.38,40,46,56,79,8429.隊列的插入操作在()進(jìn)行。A.隊頭B.隊尾C.隊頭或隊尾D.在任意指定位置二、填空題(每小題2分,共24分)1.一棵二叉樹沒有單分支結(jié)點,有6個葉結(jié)點,則該樹總共有_____(dá)___個結(jié)點。2.在二叉樹的鏈?zhǔn)酱鎯Y(jié)構(gòu)中,通常每個結(jié)點中設(shè)立三個域,它們是_______、、右指針。3.設(shè)一棵完全二叉樹,其最高層上最右邊的葉結(jié)點的編號為奇數(shù),該葉節(jié)點的雙親結(jié)點的編號為10,該完全二叉樹一共有____(dá)____個結(jié)點。4.一棵二叉樹中順序編號為i的結(jié)點,若它存在左、右孩子,則左、右孩子編號分別為___(dá)___、___(dá)_____。5.按照二叉樹的遞歸定義,對二叉樹遍歷的常用算法有___(dá)_、___(dá)_、___(dá)_三種。6.串的兩種最基本的存儲方式是____(dá)__(dá)__和___(dá)_____。7.數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)元素存在一對多的關(guān)系稱為______(dá)__(dá)結(jié)構(gòu)。8.一棵有2n-1個結(jié)點的二叉樹,其每一個非葉結(jié)點的度數(shù)都為2,則該樹共有___(dá)____個葉結(jié)點。9.把數(shù)據(jù)存儲到計算機中,并具體體現(xiàn)數(shù)據(jù)之間的邏輯結(jié)構(gòu)稱為_____(dá)___結(jié)構(gòu)。10.對于一棵具有n個結(jié)點的二叉樹,其相應(yīng)的鏈?zhǔn)酱鎯Y(jié)構(gòu)中共有______(dá)__(dá)個指針域為空。11.結(jié)構(gòu)中的數(shù)據(jù)元素存在一對一的關(guān)系稱為________結(jié)構(gòu)。12.______(dá)__遍歷二叉排序樹可得到一個有序序列。13.如圖4所示的二叉樹,其后序遍歷序列為。eefgibachd圖414.n個元素進(jìn)行冒泡法排序,通常需要進(jìn)行_____(dá)___(dá)趟冒泡。15.如圖5所示的二叉樹,其先序遍歷序列為___(dá)__(dá)____。ggfabdec圖516.二叉樹為二叉排序的充足必要條件是其任一結(jié)點的值均大于其左孩子的值、小于其右孩子的值。這種說法是__(dá)_____(dá)___的。(回答對的或不對的)17.圖的深度優(yōu)先搜索和廣度優(yōu)先搜索序列不一定是唯一的。此斷言是____(dá)__的。(回答對的或不對的)18.根據(jù)搜索方法的不同,圖的遍歷有____(dá)、____(dá)兩種方法19.對記錄序列排序是指按記錄的某個關(guān)鍵字排序,記錄序列按______(dá)___排序結(jié)果是唯一的。20.按某關(guān)鍵字對記錄序列排序,若關(guān)鍵字的記錄在排序前和排序后仍保持它們的前后關(guān)系,則排序算法是穩(wěn)定的,否則是不穩(wěn)定的。三、綜合題1.(1)運用篩選過程把序列{42,82,67,102,16,32,57,52}建成堆(小根堆),畫出該堆(不規(guī)定中間過程)。(2)寫出對上述堆相應(yīng)的完全二叉樹進(jìn)行中序遍歷得到的序列。2.設(shè)查找表為(16,15,20,53,64,7),(1)用冒泡法對該表進(jìn)行排序(規(guī)定升序排列),寫出每一趟的排序過程,通常對n個元素進(jìn)行冒泡排序要進(jìn)行多少趟冒泡?第j趟要進(jìn)行多少次元素間的比較?(2)在排序后的有序表的基礎(chǔ)上,畫出對其進(jìn)行折半查找所相應(yīng)的鑒定樹.(規(guī)定以數(shù)據(jù)元素作為樹結(jié)點)3.(1)設(shè)有查找表{5,14,2,6,18,7,4,16,3},依次取表中數(shù)據(jù),構(gòu)造一棵二叉排序樹。(2)說明如何由序列的二叉排序樹得到相應(yīng)序列的排序結(jié)果,對上述二叉排序給出中序遍歷的結(jié)果。4.(1)設(shè)有一個整數(shù)序列{50,38,16,82,110,13,64},依次取出序列中的數(shù),構(gòu)造一棵二叉排序樹(2)運用上述二叉排序樹,為了查找110,經(jīng)多少次元素間的比較能成功查到,為了查找15,經(jīng)多少次元素間的比較可知道查找失敗5.(1)對給定權(quán)值2,1,3,3,4,5,構(gòu)造哈夫曼樹。(2)同樣用上述權(quán)值構(gòu)造另一棵哈夫曼樹,使兩棵哈夫曼樹有不同的高度,并分別求兩棵樹的帶權(quán)途徑長度。四、程序填空題1.以下函數(shù)為鏈隊列的入隊操作,x為要入隊的結(jié)點的數(shù)據(jù)域的值,front、rear分別是鏈隊列的隊頭、隊尾指針structnode{ElemTypedata;structnode*next;};structnode*front,*rear;voidInQueue(ElemTypex){structnode*p;p=(structnode*)__(dá)_(1)____(dá)_

溫馨提示

  • 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

提交評論