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

下載本文檔

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

文檔簡介

數(shù)據(jù)結(jié)構(gòu)(本)期末綜合練習(xí)2023年6月為了幫助同學(xué)們進行期末復(fù)習(xí),特擬定以下三套期末綜合練習(xí)題,望同學(xué)們逐個認真完畢。數(shù)據(jù)結(jié)構(gòu)(本)期末綜合練習(xí)一一、單項選擇題1.針對線性表,在存儲后假如最常用的操作是取第i個結(jié)點及其前驅(qū),則采用()存儲方式最節(jié)省時間。A.單鏈表B.雙鏈表C.單循環(huán)鏈表D.順序表2.線性表采用鏈式存儲時,其地址()。A.一定是不連續(xù)的B.必須是連續(xù)的C.可以連續(xù)也可以不連續(xù)D.部分地址必須是連續(xù)的3.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機無關(guān)的是數(shù)據(jù)的()結(jié)構(gòu)。A.物理B.存儲C.邏輯與物理D.邏輯4.帶頭結(jié)點的單向鏈表的頭指針為head,該鏈表為空的鑒定條件是()的值為真。A.head==NULLB.head->next==headC.head->next==NULLD.head==head->next5.以下特性中,()不是算法的特性。A.有窮性B.?dāng)M定性C.可行性D.有0個或多個輸出6.設(shè)順序存儲的線性表長度為n,對于插入操作,設(shè)插入位置是等概率的,則插入一個元素平均移動元素的次數(shù)為()。A.n/2B.nC.n-1D.n-i+17.設(shè)有一個長度為n的順序表,要在第i個元素之前(也就是插入元素作為新表的第i個元素),則移動元素個數(shù)為()。A.n-i+1B.n-iC.n-i-1D.i8.一個棧的進棧序列是5,6,7,8,則棧的不也許的出棧序列是()(進出棧操作可以交替進行)A.5,8,6,7B.7,6,8,5C.7,6,5,8D.8,7,6,59.棧的插入刪除操作在()進行。A.棧底B.任意位置C.指定位置D.棧頂10.棧和隊列的相同點是()。A.都是后進先出B.都是后進后出C.邏輯結(jié)構(gòu)與線性表不同D.邏輯結(jié)構(gòu)與線性表相同,都是操作規(guī)則受到限制的線性表11.以下說法對的的是()。A.棧的特點是先進先出,隊列的特點是先進后出B.棧和隊列的特點都是先進后出C.棧的特點是先進后出,隊列的特點是先進先出D.棧和隊列的特點都是先進先出12.在C語言中,運用數(shù)組a存放字符串“Hello”,以下語句中對的的是()。A.chara[10]=“Hello”;B.chara[10];a=“Hello”;C.chara[10]=‘Hello’;D.chara[10]={‘H’,’e’,’l’,’l’,’o’};13.元素2,4,6,8按順序依次進棧,則該棧的不也許輸出序列是()(進棧出??梢越惶孢M行)。A.8,6,4,2B.2,4,6,8C.4,2,8,6D.8,6,2,414.設(shè)有一個15階的對稱矩陣A,采用壓縮存儲方式將其下三角部分以行序為主序存儲到一維數(shù)組b中。(矩陣A的第一個元素為a1,1,數(shù)組b的下標(biāo)從1開始),則數(shù)組元素b[13]相應(yīng)A的矩陣元素是()。A.a5,3B.a6,4C.a(chǎn)7,2D15.設(shè)有一個15階的對稱矩陣A,采用壓縮存儲的方式,將其下三角部分以行序為主序存儲到一維數(shù)組B中(數(shù)組下標(biāo)從1開始),則矩陣中元素a7,6在一維數(shù)組B中的下標(biāo)是()。A.42B.13C16.一棵完全二叉樹共有30個結(jié)點,則該樹一共有()層(根結(jié)點所在層為第一層)。A.6B.4C.3D17.串函數(shù)StrCmp(“d”,“D”)的值為()。A.0B.1C18.以下說法對的的是()。A.連通圖G的生成樹中不一定包含G的所有頂點B.連通圖G的生成樹中一定要包含G的所有邊C.連通圖G的生成樹一定是唯一的D.連通圖G一定存在生成樹19.在一棵二叉樹中,若編號為i的結(jié)點存在右孩子,則右孩子的順序編號為()。A.2iB.2i-1C20.對二叉排序樹進行()遍歷,遍歷所得到的序列是有序序列。A.按層次B.前序C.中序D.后序21.設(shè)一棵有n個結(jié)點采用鏈式存儲的二叉樹,則該樹共有()個指針域為空。A.2nB.2n+1C.2n+222.以下排序算法中,在一趟排序過程中,除了其它相關(guān)操作外,只進行一次元素間的互換的算法是()。A.直接選擇B.冒泡C.直接插入D.折半插入23.已知如圖1所示的一個圖,若從頂點a出發(fā),按廣度優(yōu)先搜索法進行遍歷,則也許得到的一種頂點序列為()。A.abcedfB.abcefdC.aebcfdD.acfdebbbdfeca圖124.對長度為n的線性表進行順序查找,在等概率情況下,平均查找長度為()。A.nB.(n+1)/2C.2n25.在有序表{1,3,8,13,33,42,46,63,76,78,86,97,100}中,用折半查找值86時,經(jīng)()次比較后查找成功。A.6B.3C26.如圖若從頂點a出發(fā)按深度優(yōu)先搜索法進行遍歷,則也許得到的頂點序列為()。ababecdfgB.aedcbgfC.acfebdgD.aecbdgf27.有一個長度為10的有序表,按折半查找對該表進行查找,在等概率情況下查找成功的平均比較次數(shù)為()。A.29/10B.31/10C28.一棵哈夫曼樹有12個葉子結(jié)點(終端結(jié)點),該樹總共有()個結(jié)點。A.22B.21C.23D.29.一組記錄的關(guān)鍵字序列為(37,70,47,29,31,85),運用快速排序,以第一個關(guān)鍵字為分割元素,通過一次劃分后結(jié)果為()。A.31,29,37,47,70,85B.29,31,37,47,70,85C.31,29,37,70,47,85D.31,29,37,85,47,7030.隊列的刪除操作在()進行。A.隊頭B.隊尾C.隊頭或隊尾D.在任意指定位置得分評卷人二、填空題1.把數(shù)據(jù)存儲到計算機中,并具體體現(xiàn)數(shù)據(jù)之間的邏輯結(jié)構(gòu)稱為________結(jié)構(gòu)。2.設(shè)有一個不帶頭結(jié)點的單向循環(huán)鏈表,結(jié)點的指針域為next,指針p指向尾結(jié)點,現(xiàn)要使p指向第一個結(jié)點,可用語句________。3.結(jié)構(gòu)中的數(shù)據(jù)元素存在一對一的關(guān)系稱為________結(jié)構(gòu)。4.要在一個帶頭結(jié)點的單向循環(huán)鏈表中刪除頭結(jié)點,得到一個新的不帶頭結(jié)點的單向循環(huán)鏈表,若結(jié)點的指針域為next,頭指針為head,尾指針為p,,則可執(zhí)行head=head->next;________。5.在雙向鏈表中,每個結(jié)點有兩個指針域,一個指向________,另一個指向_________。6.設(shè)有一個非空的鏈棧,棧頂指針為hs,要進行出棧操作,用x保存出棧結(jié)點的值,棧結(jié)點的指針域為next,數(shù)據(jù)域為dat(yī)a,則可執(zhí)行x=________;和hs=________;7.設(shè)有一個頭指針為head的單向鏈表,p指向表中某一個結(jié)點,且有p->next==NULL,通過操作________,就可使該單向鏈表構(gòu)導(dǎo)致單向循環(huán)鏈表。8.循環(huán)隊列的最大存儲空間為MaxSize,隊頭指針為f,隊尾指針為r,當(dāng)________時表白隊列已滿。9.從一個棧頂指針為h的鏈棧中刪除一個結(jié)點時,用x保存被刪結(jié)點的值,可執(zhí)行x=h->dat(yī)a;和________。(結(jié)點的指針域為next)10.程序段intcount=0;char*s=”ABCD”;while(*s!=’\0’執(zhí)行后count=________11.兩個串相等的充足必要條件是__________。12.一棵二叉樹總結(jié)點數(shù)為11,葉結(jié)點數(shù)為5,該樹有________個雙分支結(jié)點,________個單分支結(jié)點。13.對二叉樹的遍歷可分為________、、、四種不同的遍歷順序。14.設(shè)一棵完全二叉樹,其最高層上最右邊的葉結(jié)點的編號為偶數(shù),該葉節(jié)點的雙親結(jié)點的編號為9,該完全二叉樹一共有________個結(jié)點。15.一棵有n個葉結(jié)點的二叉樹,其每一個非葉結(jié)點的度數(shù)都為2,則該樹共有_______個結(jié)點。16.雙向循環(huán)鏈表中,p指向表中某結(jié)點,則通過p可以訪問到p所指結(jié)點的直接后繼結(jié)點和直接前驅(qū)結(jié)點,這種說法是________的(回答對的或不對的)。17.一棵有14個結(jié)點的完全二叉樹,則它的最高層上有_______個結(jié)點。18.棧和隊列的操作特點分別是________和________。19.如圖2所示的二叉樹,其先序遍歷序列為_________。efefgibachd圖220.折半查找只合用于存儲的有序表。21.哈希函數(shù)是記錄關(guān)鍵字值與該記錄______之間所構(gòu)造的相應(yīng)關(guān)系。22.深度為k的二叉樹最多有結(jié)點。23.二叉樹排序中任一棵子樹都是二叉排序樹,這種說法是_______的。(回答對的或不對的)24.串的兩種最基本的存儲方式是________和________。得分評卷人三、綜合題1.設(shè)一組記錄的關(guān)鍵字序列為(49,83,59,41,43,47),采用堆排序算法完畢以下操作:(規(guī)定小根堆,并畫出中間過程)(1)以二叉樹描述6個元素的初始堆(2)以二叉樹描述逐次取走堆頂元素后,經(jīng)調(diào)整得到的5個元素、4個元素的堆2.設(shè)有一個不帶頭結(jié)點的單向鏈表,頭指針為head,結(jié)點類型為NODE,每個結(jié)點包含一個數(shù)據(jù)域dat(yī)a和一個指針域next,該鏈表有兩個結(jié)點,p指向第二個結(jié)點(尾結(jié)點),按以下規(guī)定寫出相應(yīng)語句(不規(guī)定完整程序,(1)、(2)、(3)、(4)是一個連續(xù)的過程)。(1)新開辟一個結(jié)點,使指針s指向該結(jié)點,結(jié)點的數(shù)據(jù)成員data賦值為1(2)把該結(jié)點插入鏈表的尾部,釋放指針s的指向(3)刪除鏈表的第一個結(jié)點(4)已知p1指向另一個新結(jié)點,把它插入到p所指結(jié)點和尾結(jié)點之間3.設(shè)有序表為(13,19,25,36,48,51,63,84,91,116,135,200),元素的下標(biāo)依次為1,2,……,12。(1)說出有哪幾個元素需要通過4次元素間的比較才干成功查到(2)畫出對上述有序表進行折半查找所相應(yīng)的鑒定樹(樹結(jié)點用下標(biāo)表達)(3)設(shè)查找元素5,需要進行多少次元素間的比較才干擬定不能查到4.(1)設(shè)有序列{10,12,15,19,22,25,100,130,150,200}畫出對上述序列進行折半查找的鑒定樹(以序列中的元素作為樹的結(jié)點)(2)為了成功查找到100需要進行多少次元素間的比較?為了查找9,通過多少次元素間的比較可知道查找失?。?.(1)對給定數(shù)列{7,16,4,8,20,9,6,18,5},依次取數(shù)列中的數(shù)據(jù),構(gòu)造一棵二叉排序樹。(2)對一個給定的查找值,簡述針對二叉排序樹進行查找的算法環(huán)節(jié),在上述二叉樹中查找元素20共要進行多少次元素的比較?6.(1)設(shè)有查找表{5,14,2,6,18,7,4,16,3},依次取表中數(shù)據(jù),構(gòu)造一棵二叉排序樹。(2)說明如何由序列的二叉排序樹得到相應(yīng)序列的排序結(jié)果,對上述二叉排序給出中序遍歷的結(jié)果。四、程序填空題1.以下冒泡法程序?qū)Υ娣旁赼[1],a[2],……,a[n]中的序列進行排序,完畢程序中的空格部分,其中n是元素個數(shù),規(guī)定按升序排列。voidbsort(NODEa[],intn){NODEtemp;inti,j,flag;for(j=1;(1);j++);{flag=0;for(i=1;(2);i++)if(a[i].key>a[i+1].key){flag=1;temp=a[i];(3);(4);}if(flag==0)break;}}程序中flag的功能是(5)2.以下程序是先序遍歷二叉樹的遞歸算法的程序,完畢程序中空格部分(樹結(jié)構(gòu)中左、右指針域分別為left和right,數(shù)據(jù)域dat(yī)a為字符型,BT指向根結(jié)點)。voidPreorder(structBTreeNode*BT){if(BT!=NULL){(1);(2);(3);}}3.設(shè)線性表為(6,10,16,4),以下程序用說明結(jié)構(gòu)變量的方法建立單向鏈表,并輸出鏈表中各結(jié)點中的數(shù)據(jù)。#defineNULL0voidmain(){NODEa,b,c,d,*head,*p;a.data=6;b.dat(yī)a=10;c.data=16;d.data=4;/*d是尾結(jié)點*/head=(1);a.next=&b;b.next=&c;c.next=&d;(2);/*以上結(jié)束建表過程*/p=head;/*p為工作指針,準備輸出鏈表*/do{printf(“%d\n”,(3));(4);}while((5));}4.以下程序是中序遍歷二叉樹的遞歸算法的程序,完畢程序中空格部分(樹結(jié)構(gòu)中左、右指針域分別為left和right,數(shù)據(jù)域dat(yī)a為字符型,BT指向根結(jié)點)。voidInorder(structBTreeNode*BT){if(BT!=NULL){(1);(2);(3);}}答案一、單項選擇題1.D2.C3.D4.C5.D6.A7.A8.A9.D10.D11.C12.A13.D14.A15.C16.D17.B18.D19.D20.C21.D22.A23.B24、B25.D26.A27.A28.C29.A30.A二、填空題1.物理(存儲)3.線性5.結(jié)點的直接后繼結(jié)點的直接前驅(qū)7.p->next=head;9.h=h->next;11.串長度相等且相應(yīng)位置的字符相等13.先序、中序、后序、層次15.2n-117.719.abdgcefhi21.存儲地址23.對的2.p=p->next;4.p->next=head;6.hs->data;hs->next;8.(r+1)%MaxSize=f10.412.4;214.1816.對的18.先進后出(后進先出)先進先出(后進后出)20.順序存儲結(jié)構(gòu)22.2k-124.順序存儲鏈式存儲三、綜合題4959495983414347834741435949498341434783435949414347834959414759(1)圖3594759474149834347414741835943494347415983494747414383495959594741438349圖42.(1)s=(NODE*)malloc(sizeof(NODE));s->dat(yī)a=1;(2)p->next=s;s->next=NULL;free(s)(3)head=head->next;(4)p1->next=p->next;p->next=p1;3.(1)19,48,84,116,200(2)4471285211110639圖5(3)3次2212221213019150251520010010(1)(2)4次;3次5.46468957162018圖6(2)先將給定值與根結(jié)點比較,若相等則查找成功,否則若小于根結(jié)點則在左子樹中繼續(xù)查找,大于根結(jié)點在右子樹中查找,查找20共進行3次比較。6.24246167318514圖6(2)中序遍歷中序2,3,4,5,6,7,14,16,18四、程序填空題1.(1)j<=n-1(2)i<=n-j(3)a[i]=a[i+1](4)a[i+1]=temp(5)當(dāng)某趟冒泡中沒有出現(xiàn)互換則已排好序,結(jié)束循環(huán)2.(1)printf(“%c”,BT->data)(2)Preorder(BT->left)(3)Preorder(BT->right)3.(1)&a(2)dnext=NULL(3)p->data(4)p=p->next(5)p!=NULL4.(1)Inorder(BT->left)(2)printf(“%c”,BT->dat(yī)a)(3)Inorder(BT->right)數(shù)據(jù)結(jié)構(gòu)(本)期末綜合練習(xí)二2023年6月一、單項選擇題1.?dāng)?shù)據(jù)元素是數(shù)據(jù)的基本單位,它()。A.只能有一個數(shù)據(jù)項組成B.至少有二個數(shù)據(jù)項組成C.可以是一個數(shù)據(jù)項也可以由若干個數(shù)據(jù)項組成D.至少有一個數(shù)據(jù)項為指針類型2.一種邏輯結(jié)構(gòu)()存儲結(jié)構(gòu)。A.可以有不同的B.只能有唯一的C.的數(shù)據(jù)元素在計算機中的表達稱為D.的數(shù)據(jù)元素之間的關(guān)系稱為3.線性表的順序結(jié)構(gòu)中,()。A.邏輯上相鄰的元素在物理位置上不一定相鄰B.?dāng)?shù)據(jù)元素是不能隨機訪問的C.邏輯上相鄰的元素在物理位置上也相鄰D.進行數(shù)據(jù)元素的插入、刪除效率較高4.以下說法中不對的的是()。A.雙向循環(huán)鏈表中每個結(jié)點需要包含兩個指針域B.已知單向鏈表中任一結(jié)點的指針就能訪問到鏈表中每個結(jié)點C.順序存儲的線性鏈表是可以隨機訪問的D.單向循環(huán)鏈表中尾結(jié)點的指針域中存放的是頭指針5.以下表中可以隨機訪問的是()。A.單向鏈表B.雙向鏈表C.單向循環(huán)鏈表D.順序表6.雙向循環(huán)鏈表結(jié)點的數(shù)據(jù)類型為:structnode{intdat(yī)a;structnode*next;/*指向直接后繼*/structnode*prior;};設(shè)p指向表中某一結(jié)點,要顯示p所指結(jié)點的直接前驅(qū)結(jié)點的數(shù)據(jù)元素,可用操作()。A.printf(“%d”,p->next->dat(yī)a);B.printf(“%d”,p->prior->data);C.printf(“%d”,p->prior->next);D.printf(“%d”,p->data);7.設(shè)順序存儲的線性表長度為n,對于刪除操作,設(shè)刪除位置是等概率的,則刪除一個元素平均移動元素的次數(shù)為()。A.(n+1)/2B.nC.2nD.n-i8.一個棧的進棧序列是efgh,則棧的不也許的出棧序列是()(進出棧操作可以交替進行)。A.hgfeB.gfehC.fgehD.ehfg9.設(shè)top是一個鏈棧的棧頂指針,棧中每個結(jié)點由一個數(shù)據(jù)域dat(yī)a和指針域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è)top是一個鏈棧的棧頂指針,棧中每個結(jié)點由一個數(shù)據(jù)域data和指針域next組成,設(shè)用x接受棧頂元素,則取棧頂元素的操作為()。A.top->dat(yī)a=x;B.top=top->next;C.x=top->data;D.x=top->data;top=top->next;11.以下說法對的的是()。A.隊列是后進先出B.棧的特點是后進后出C.棧的刪除和插入操作都只能在棧頂進行D.隊列的刪除和插入操作都只能在隊頭進行12.以下說法不對的的是()。A.棧的特點是后進先出B.隊列的特點是先進先出C.棧的刪除操作在棧底進行,插入操作在棧頂進行D.隊列的插入操作在隊尾進行,刪除操作在隊頭進行13.串函數(shù)StrCmp(“abA”,”aba”)的值為()。A.1B.0C.“abAaba”D14.char*p;p=StrCat(yī)(“ABD”,”ABC”);Printf(“%s”,p);的顯示結(jié)果為()。A.-1B.ABDABCC.ABD.115.設(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.深度為5的滿二叉樹至多有()個結(jié)點(根結(jié)點為第一層)A.40B.31C.34D17.已知一個圖的邊數(shù)為m,則該圖的所有頂點的度數(shù)之和為()。A.2mB.mC.2m+1D.m/218.已知一個圖的所有頂點的度數(shù)之和為m,則該圖的邊數(shù)為()。A.2mB.mC.2m+1D.m/219.以下說法不對的的是()。A.連通圖G一定存在生成樹B.連通圖G的生成樹中一定包含G的所有頂點C.連通圖G的生成樹中不一定包含G的所有邊D.連通圖G的生成樹可以是不連通的20.以下說法不對的的是()。A.連通圖G的生成樹一定是唯一的B.連通圖G一定存在生成樹C.連通圖G的生成樹中一定要包含G的所有頂點D.連通圖G的生成樹一定是連通并且不包含回路21.散列查找的原理是()。A.在待查記錄的關(guān)鍵字值與該記錄的存儲位置之間建立擬定的相應(yīng)關(guān)系B.按待查記錄的關(guān)鍵字有序的順序方式存儲C.按關(guān)鍵字值的比較進行查找D.基于二分查找的方法22.有序表為{1,2,4,6,10,18,20,32},用課本中折半查找算法查找值18,經(jīng)()次比較后成功查到。A.3B.2C.4D23.排序過程中,每一趟從無序子表中將一個待排序的記錄按其關(guān)鍵字的大小放置到已經(jīng)排好序的子序列的適當(dāng)位置,直到所有排好序為止,該排序算法是()。A.直接插入排序B.快速排序C.冒泡排序D.選擇排序24.在排序過程中,可以通過某一趟排序的相關(guān)操作所提供的信息,判斷序列是否已經(jīng)排好序,從而可以提前結(jié)束排序過程的排序算法是()。A.冒泡B.選擇C.直接插入D.折半插入25.采用順序查找法對長度為n的線性表進行查找(不采用表尾設(shè)監(jiān)視哨的方法),最壞的情況下要進行()次元素間的比較。A.n+2B.nC.n-1D.n/226.用折半查找法,對長度為12的有序的線性表進行查找,最壞情況下要進行()次元素間的比較A.4B.3C.5D27.如圖若從頂點a出發(fā)按廣度優(yōu)先搜索法進行遍歷,則也許得到的頂點序列為()。ababecdhgfB.aebcghdfC.aedfbcghD.a(chǎn)becdfgh圖128.如圖若從頂點a出發(fā)按深度優(yōu)先搜索法進行遍歷,則也許得到的頂點序列為()。bcbcgdafeB.a(chǎn)edbgfcC.acfebdgD.aecbdgf29.一棵哈夫曼樹總共有23個結(jié)點,該樹共有()個葉結(jié)點(終端結(jié)點)A.10B.13C.1130.一棵哈夫曼樹總共有25個結(jié)點,該樹共有()個非葉結(jié)點(非終端結(jié)點)。A.12B.13C.14二、填空題(每小題2分,共24分)1.通常數(shù)據(jù)的邏輯結(jié)構(gòu)涉及____、____、____、____四種類型。2.結(jié)構(gòu)中的元素之間存在多對多的關(guān)系稱為________結(jié)構(gòu)。3.設(shè)有一個單向鏈表,結(jié)點的指針域為next,頭指針為head,p指向尾結(jié)點,為了使該單向鏈表改為單向循環(huán)鏈表,可用語句________。4.設(shè)有一個單向循環(huán)鏈表,結(jié)點的指針域為next,頭指針為head,指針p指向表中某結(jié)點,若邏輯表達式________的結(jié)果為真,則p所指結(jié)點為尾結(jié)點。5.設(shè)有一個單向循環(huán)鏈表,頭指針為head,鏈表中結(jié)點的指針域為next,p指向尾結(jié)點的直接前驅(qū)結(jié)點,若要刪除尾結(jié)點,得到一個新的單向循環(huán)鏈表,可執(zhí)行操作________。6.設(shè)有一個鏈棧,棧頂指針為hs,現(xiàn)有一個s所指向的結(jié)點要入棧,則可執(zhí)行操作s->next=hs;________。7.在一個鏈隊中,f和r分別為隊頭和隊尾指針,隊結(jié)點的指針域為next,則插入一個s所指結(jié)點的操作為________;r=s;8.在一個鏈隊中,f和r分別為隊頭和隊尾指針,隊結(jié)點的指針域為next,s指向一個要入隊的結(jié)點,則入隊操作為________;________;9.循環(huán)隊列的隊頭指針為f,隊尾指針為r,當(dāng)_____時表白隊列為空。10.循環(huán)隊列的最大存儲空間為MaxSize=6,采用少用一個元素空間以有效地判斷??栈驐M,若隊頭指針front=4,當(dāng)隊尾指針rear=________時隊滿,隊列中共有________個元素。11.‘A‘在存儲時占________個字節(jié)?!癆”在存儲時占________個字節(jié)。12.程序段char*s=”aBcD”;n=0;while(*s!=’\0’{if(*s>=’a’&&*s<=’z’)n++;s++;}執(zhí)行后n=________13.一棵二叉樹沒有單分支結(jié)點,有6個葉結(jié)點,則該樹總共有________個結(jié)點。14.一棵二叉樹中順序編號為5的結(jié)點(樹中各結(jié)點的編號與等深度的完全二叉中相應(yīng)位置上結(jié)點的編號相同),若它存在左孩子,則左孩子的編號為________。15.按照二叉樹的遞歸定義,對二叉樹遍歷的常用算法有____、____、____三種。16.根據(jù)搜索方法的不同,圖的遍歷有________兩種方法。17.把數(shù)據(jù)存儲到計算機中,并具體體現(xiàn)數(shù)據(jù)之間的邏輯結(jié)構(gòu)稱為________結(jié)構(gòu)。18.結(jié)構(gòu)中的數(shù)據(jù)元素存在多對多的關(guān)系稱為________結(jié)構(gòu)。19.如圖2所示的二叉樹,其后序遍歷序列為。eefgibachd圖220.一棵有n個葉結(jié)點的二叉樹,其每一個非葉結(jié)點的度數(shù)都為2,則該樹共有_______個結(jié)點。21.二叉樹為二叉排序的充足必要條件是其任一結(jié)點的值均大于其左孩子的值、小于其右孩子的值。這種說法是__________的。(回答對的或不對的)22.串的兩種最基本的存儲方式分別是_______和________。23.根據(jù)搜索方法的不同,圖的遍歷有____、____兩種方法24.按某關(guān)鍵字對記錄序列排序,若關(guān)鍵字的記錄在排序前和排序后仍保持它們的前后關(guān)系,則排序算法是穩(wěn)定的,否則是不穩(wěn)定的。三、綜合題1.(1)已知某二叉樹的后序遍歷序列是debca,中序遍歷序列是dbeac,試畫出該二叉樹(2)若上述二叉樹的各個結(jié)點的字符分別代表不同的整數(shù)(其中沒有相等的),并恰好使該樹成為一棵二叉排序樹,試給出a、b、c、d、e的大小關(guān)系(3)給出該樹的前序遍歷序列2.(1)已知某二叉樹的先序遍歷序列是aecdb,中序遍歷序列是eadcb,試畫出該二叉樹(2)給出上述二叉樹的后序遍歷序列(3)若上述二叉樹的各個結(jié)點的字符分別是1,2,3,4,5,并恰好使該樹成為一棵二叉排序樹,試問a、b、c、d、e的值各為多少?3.(1)設(shè)有一個整數(shù)序列{40,28,6,72,100,3,54}依次取出序列中的數(shù),構(gòu)造一棵二叉排序樹(2)對上述二叉排序樹,在等概率條件下,求成功查找的平均查找長度4.(1)給定數(shù)列{8,17,5,9,21,10,7,19,6},依次取序列中的數(shù)構(gòu)造一棵二叉排序樹(2)對上述二叉樹給出中序遍歷得到的序列5.(1)運用篩選過程把序列{42,82,67,102,16,32,57,52}建成堆(小根堆),畫出相應(yīng)的完全二叉樹(不規(guī)定中間過程)(2)寫出對上述堆相應(yīng)的完全二叉樹進行中序遍歷得到的序列6.(1)以給定權(quán)重值1,2,12,13,20,25為葉結(jié)點,建立一棵哈夫曼樹(2)若哈夫曼樹有n個非葉子結(jié)點,則樹中共有多少結(jié)點。對給定的一組權(quá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)_____){mid=(low+high)/2;if(a[mid].key==k)return__(2)______; elseif(___(3)_____)low=mid+1;?else__(4)______;?}___(5)_____;?}2.以下函數(shù)是二叉排序樹的查找算法,若二叉樹為空,則返回根結(jié)點的指針,否則,返回值是指向樹結(jié)點的結(jié)構(gòu)指針p(查找成功p指向查到的樹結(jié)點,不成功p指向為NULL)完畢程序中的空格typedefstructBnode{intkey;structBnode*left;structBnode*right;}Bnode;Bnode*BSearch(Bnode*bt,intk)/*bt用于接受二叉排序樹的根結(jié)點的指針,k用以接受要查找的關(guān)鍵字*/{Bnode*p;if(bt==___(1)_____)return(bt);p=bt;while(p->key!=__(2)______) {if(k<p->key) ?___(3)_____;else___(4)_____;?if(p==NULL)break;}Return(___(5)_____);}3.以下函數(shù)為鏈隊列的入隊操作,x為要入隊的結(jié)點的數(shù)據(jù)域的值,front、rear分別是鏈隊列的隊頭、隊尾指針structnode{ElemTypedata;structnode*next;};structnode*front,*rear;voidInQueue(ElemTypex){structnode*p;p=(structnode*)___(1)_____;p->data=x;p->next=NULL;___(2)_____;rear=___(3)_____;}4.以下函數(shù)為鏈隊列的出隊操作(鏈隊列帶有頭結(jié)點),出隊結(jié)點的數(shù)據(jù)域的值由x返回,front、rear分別是鏈隊列的隊頭、隊尾指針structnode{ElemTypedata;structnode*next;};structnode*front,*rear;ElemTypeOutQueue(){?ElemTypex;?if(___(1)_____){printf("隊列下溢錯誤!\n");exit(1);}else{structnode*p=front->next;x=p->data;front->next=___(2)_____;if(p->next==NULL)rear=front;free(p);___(3)_____;}}答案一、單項選擇題1.C2.A3.C4.B5.D6.B7.A8.D9.A10.C11.C12.C13.D14.B15.A16.B17.A18.D19.D20.A21.A22.B23.A24.A25.B26.A27.D28.B29.D30.A二、填空題1.集合;線性;樹形;圖狀2.圖狀3.p->next=head;4.p->next==head;5.p->next=head;6.hs=s;7.r->next=s8.r->next=s;r=s;9.r==f10.3;511.1;212.213.1114.1015.先序;中序;后序16.深度優(yōu)先;廣度優(yōu)先17.物理(存儲)18.圖狀(網(wǎng)狀)19.gdbeihfca20.2n-121.錯誤22.順序存儲鏈式存儲23.深度優(yōu)先廣度優(yōu)先24.關(guān)鍵字相等的記錄三、綜合應(yīng)用題abceabced(2)d<b<e<a<c(3)abdecaecbdaecbd(2)edbca(3)e=1,a=2,d=3,c=4,b=540287231004028723100546(2)ASL=(1x1+2x2+3x3+4)/7=18/785176218517621971910(2)5,6,7,8,9,10,17,18,19,215.16423252571642325257678242826752573216102102初始樹堆102初始樹堆(2)102,52,42,82,16,67,32,572845284513213573209131525012321(2)2n-1不一定唯一四、程序填空題(每空2分,共16分)1.(1)low<=high(2)mid(3)a[mid].key<k;(4)high=mid-1(5)return-1;2.(1)NULL(2)k(3)p=p->left(4)p=p->right(5)p3.(1)malloc(sizeof(structnode))(2)rear->next=p(3)p4.(1)front==rear(2)p->next(3)return(x)數(shù)據(jù)結(jié)構(gòu)(本)期末綜合練習(xí)三2023年6月一、單項選擇題1.()是性質(zhì)相同的數(shù)據(jù)元素的集合,是數(shù)據(jù)的子集。A、數(shù)據(jù)元素B.?dāng)?shù)據(jù)對象C.數(shù)據(jù)結(jié)構(gòu)D.數(shù)據(jù)項2.從n個數(shù)中選取最大元素()。A.基本操作是數(shù)據(jù)元素間的互換B.算法的時間復(fù)雜度是O(n2)C.算法的時間復(fù)雜度是O(n)D.需要進行(n+1)次數(shù)據(jù)元素間的比較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.設(shè)head為非空的單向循環(huán)鏈表頭指針,p指向鏈表的尾結(jié)點,則滿足邏輯表達式()的值為真。A.p->next=NULLB.p==NULLC.p->next=headD.p->next==head5.設(shè)順序存儲的線性長度為n,要在第i個元素之前插入一個新元素,按課本的算法當(dāng)i=()時,移動元素次數(shù)為2A.n/2B.nC.1D.n-16.設(shè)順序存儲的線性表長度為n,要刪除第i個元素,按課本的算法,當(dāng)i=()時,移動元素的次數(shù)為3A.3B.n/2C.n-3D7.一個棧的進棧序列是1,2,3,4,則棧的不也許的出棧序列是()(進出棧操作可以交替進行)A.3,2,4,1B.1,4,2,3C.4,3,2,1D.3,2,1,48.一個棧的進棧序列是a,b,c,d,則棧的不也許的出棧序列是()。A.adbcB.bcadC.cbadD.dcba9.設(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.設(shè)有一個帶頭結(jié)點的鏈隊列,隊列中每個結(jié)點由一個數(shù)據(jù)域data和指針域next組成,front和rear分別為鏈隊列的頭指針和尾指針,要執(zhí)行出隊操作,用x保存出隊元素的值,p為指向結(jié)點類型的指針,可執(zhí)行如下操作:p=front->next;x=p->dat(yī)a;然后指行()。A.front=p->next;B.front->next=p->next;C.front=p;D.front->next=p;11.以下說法不對的的是()。A.順序棧中,棧滿時再進行進棧操作稱為“上溢”B.順序棧中,??諘r再作出棧棧操作稱為“下溢”C.順序隊列中,當(dāng)尾指針已經(jīng)超越隊列存儲空間的上界,則一定是隊列已滿D.順序隊列中,隊列的頭指針和尾指針均超越隊列存儲空間的上界,則隊列已空13.設(shè)有一個20階的對稱矩陣A,采用壓縮存儲方式,將其下三角部分以行序為主序存儲到一維數(shù)組中(矩陣A的第一個元素為a11,數(shù)組b的下標(biāo)從1開始),則矩陣元素a8,5在一維數(shù)組b中的下標(biāo)是()。A.30B.28C.40D14.設(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]15.深度為5的完全二叉樹第5層上有4個結(jié)點,該樹一共有()個結(jié)點。A.28B.30C.31D16.深度為5的完全二叉樹共有20個結(jié)點,則第5層上有()個結(jié)點(根所在結(jié)點為第一層)。A.3B.8C.5D17.已知一個圖的所有頂點的度數(shù)之和為m,則m一定不也許是()。A.4B.8C.12D18.已知一個圖的所有頂點的度數(shù)之和為m,且m是以下4中情況之一,則m只也許是()。A.9B.7C.15D19.以下說法對的的是()。A.連通圖G的生成樹中可以包含回路B.連通圖G的生成樹可以是不連通的C.連通圖G的生成樹一定是唯一的D.連通圖G的生成樹一定是連通而不包含回路的20.線性表只要以()方式存儲就能進行折半查找。A.鏈接B.順序C.關(guān)鍵字有序的順序D.二叉樹21.對n個元素進行冒泡排序,通常要進行n-1趟冒泡,在第j趟冒泡中共要進行()次元素間的比較。A.jB.j-1C.n-jD22.對n個元素進行冒泡排序若某趟冒泡中只進行了()次元素間的互換,則表白序列已經(jīng)排好序。A.1B.2C.0D23.在排序過程中,可以有效地減少一趟排序過程中元素間的比較次數(shù)的算法是()。A.冒泡B.選擇C.直接插入D.折半插入24.在對一組元素(64,48,106,33,25,82,70,55,93)進行直接插入排序時,當(dāng)進行到要把第7個元素70插入到已經(jīng)排好序的子表時,為找到插入位置,需進行()次元素間的比較(指由小到大排序)。A.6B.2C.3D25.如圖若從頂點a出發(fā)按深度優(yōu)先搜索法進行遍歷,則也許得到的頂點序列為()。abecabecdfB.abedcfC.acebdfD.acfbde圖126.如圖,若從頂點a出發(fā)按廣度優(yōu)先搜索法進行遍歷,則也許得到的頂點序列為()。abecdfgabecdfgB.a(chǎn)becdgfC.acfedgbD.a(chǎn)becfdg27.一棵哈夫曼樹有n個葉子結(jié)點(終端結(jié)點),該樹總共有()個結(jié)點。A.2n-2B.2n-1C.2nD.228.一棵哈夫曼樹有10個非葉子結(jié)點(非終端結(jié)點),該樹總共有()個結(jié)點。A.21B.20C.229.數(shù)據(jù)的()結(jié)構(gòu)與所使用的計算機無關(guān)。A.邏輯B.物理C.存儲D.邏輯與存儲30.隊列的插入操作在()進行。A.隊頭B.隊尾C.隊頭或隊尾D.在任意指定位置二、填空題1.通??梢园岩槐揪哂胁煌鹿?jié)的書的目錄結(jié)構(gòu)抽象成________結(jié)構(gòu)。2.通??梢园涯吵鞘兄懈鞴徽军c間的線路圖抽象成________結(jié)構(gòu)。3.要在一個單向鏈表中p所指向的結(jié)點之后插入一個s所指向的新結(jié)點,若鏈表中結(jié)點的指針域為next,可執(zhí)行________和p->next=s;的操作。4.要在一個單向鏈表中刪除p所指向的結(jié)點,已知q指向p所指結(jié)點的直接前驅(qū)結(jié)點,若鏈表中結(jié)點的指針域為next,則可執(zhí)行________。5.設(shè)有一個非空的鏈棧,棧頂指針為hs,要進行出棧操作,用x保存出棧結(jié)點的值,棧結(jié)點的指針域為next,則可執(zhí)行x=hs->data;________。6.設(shè)有一個鏈棧,棧頂指針為hs,現(xiàn)有一個s所指向的結(jié)點要入棧,則可執(zhí)行操作________和hs=s;7.在一個不帶頭結(jié)點的非空鏈隊中,f和r分別為隊頭和隊尾指針,隊結(jié)點的數(shù)據(jù)域為dat(yī)a,指針域為next,若要進行出隊操作,并用變量x存放出隊元素的數(shù)據(jù)值,則相關(guān)操作為x=f->data;________。8.在一個不帶頭結(jié)點的非空鏈隊中,f和r分別為隊頭和隊尾指針,隊結(jié)點的數(shù)據(jù)域為data,指針域為next,若要進行出隊操作,并用變量x存放出隊元素的數(shù)據(jù)值,則相關(guān)操作為________;________。9.循環(huán)隊列的最大存儲空間為MaxSize=8,采用少用一個元素空間以有效的判斷??栈驐M,若隊頭指針front=4,則當(dāng)隊尾指針rear=________時,隊列為空,當(dāng)rear=________時,隊列有6個元素。10,順序存儲字符串“ABCD”需要占用________個字節(jié)。11.稀疏矩陣存儲時,采用一個由____、____、____3部分信息組成的三元組唯一擬定矩陣中的一個非零元素。12.一棵二叉樹葉結(jié)點(終端結(jié)點)數(shù)為5,單分支結(jié)點數(shù)為2,該樹共有______個結(jié)點。13.一棵二叉樹順序編號為6的結(jié)點(樹中各結(jié)點的編號與等深度的完全二叉中相應(yīng)位置上結(jié)點的編號相同),若它存在右孩子,則右孩子的編號為________。14.設(shè)一棵完全二叉樹,其最高層上最右邊的葉結(jié)點的編號為奇數(shù),該葉節(jié)點的雙親結(jié)點的編號為10,該完全二叉樹一共有________個結(jié)點。15.結(jié)構(gòu)中的數(shù)據(jù)元素存在多對多的關(guān)系稱為________結(jié)構(gòu)。16.結(jié)構(gòu)中的數(shù)據(jù)元素存在一對多的關(guān)系稱為________結(jié)構(gòu)。17.結(jié)構(gòu)中的數(shù)據(jù)元素存在一對多的關(guān)系稱為________結(jié)構(gòu)。18.結(jié)構(gòu)中的數(shù)據(jù)元素存在一對一的關(guān)系稱為________結(jié)構(gòu)。19.如圖2所示的二叉樹,其前序遍歷序列為_________。ggfabdec圖220.如圖2所示的二叉樹,其后序遍歷序列為。eefgibachd圖221.在隊列的順序存儲結(jié)構(gòu)中,當(dāng)插入一個新的隊列元素時,指針的值增1,當(dāng)刪除一個元素隊列時,指針的值增1。22.圖的深度優(yōu)先搜索和廣度優(yōu)先搜索序列不一定是唯一的。此斷言是______的。(回答對的或不對的)23.循環(huán)隊列的引入,目的是為了克服。24.按某關(guān)鍵字對記錄序列排序,若關(guān)鍵字的記錄在排序前和排序后仍保持它們的前后關(guān)系,則排序算法是穩(wěn)定的,否則是不穩(wěn)定的。三、綜合題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)一組記錄的關(guān)鍵字序列為{45,40,65,43,35,95}寫出運用快速排序的方法,以第一個記錄為基準得到的一趟劃分的結(jié)果(規(guī)定給出一趟劃分中每次掃描和互換的結(jié)果)(2)同樣對序列{45,40,65,43,35,95}運用直接插入排序,寫出逐次插入過程(從第一個元素一直到第六個元素)。3.(1)畫出對長度為10的有序表進行折半查找的鑒定樹(以序號1,2,……10表達樹結(jié)點)(2)對上述序列進行折半查找,求等概率條件下,成功查找的平均查找長度4.(1)運用篩選過程把序列{42,82,67,102,16,32,57,52}建成堆(小根堆),畫出相應(yīng)的完全二叉樹(不規(guī)定中間過程)(2)寫出對上述堆相應(yīng)的完全二叉樹進行中序遍歷得到的序列5.(1)運用篩選法,把序列{37,77,62,97,11,27,52,47}建成堆(小根堆),畫出相應(yīng)的完全二叉樹(2)寫出對上述堆所相應(yīng)的二叉樹進行前序遍歷得到的序列6.(1)設(shè)有一個整數(shù)序列{50,38,16,82,110,13,64},依次取出序列中的數(shù),構(gòu)造一棵二叉排序樹(2)運用上述二叉排序樹,為了查找110,經(jīng)多少次元素間的比較能成功查到,為了查找15,經(jīng)多少次元素間的比較可知道查找失敗四、程序填空題1.以下函數(shù)為直接選擇排

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論