數(shù)據(jù)結(jié)構(gòu)考試題(二)_第1頁
數(shù)據(jù)結(jié)構(gòu)考試題(二)_第2頁
數(shù)據(jù)結(jié)構(gòu)考試題(二)_第3頁
數(shù)據(jù)結(jié)構(gòu)考試題(二)_第4頁
數(shù)據(jù)結(jié)構(gòu)考試題(二)_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

數(shù)據(jù)結(jié)構(gòu)試卷(一)一、選擇題(30分)設(shè)一維數(shù)組中有n個數(shù)組元素,則讀取第i個數(shù)組元素的平均時間復(fù)雜度為()。(A)0(n) (B)O(nlog2n) (C)0(1) (D)Og)2?設(shè)一棵二叉樹的深度為k,則該二叉樹中最多有()個結(jié)點(diǎn)。(A)2k-1 (B)2k (C)2k-i (D)2k-13設(shè)某無向圖中有n個頂點(diǎn)e條邊,則該無向圖中所有頂點(diǎn)的入度之和為()。(A)n (B)e (C)2n (D)2e在二叉排序樹中插入一個結(jié)點(diǎn)的時間復(fù)雜度為()。(A)0(1) (B)0(n) (C)O(log2n) (D)0(n2)設(shè)某有向圖的鄰接表中有n個表頭結(jié)點(diǎn)和m個表結(jié)點(diǎn),則該圖中有()條有向邊。(A)n (B)n-1 (C)m (D)m-1設(shè)一組初始記錄關(guān)鍵字序列為(345,253,674,924,627),則用基數(shù)排序需要進(jìn)行()趟的分配和回收才能使得初始關(guān)鍵字序列變成有序序列。(A)3 (B)4 (C)5 (D)87?設(shè)用鏈表作為棧的存儲結(jié)構(gòu)則退棧操作()。(A)必須判別棧是否為滿 (B)必須判別棧是否為空(C)判別棧元素的類型 (D)對棧不作任何判別&下列四種排序中()的空間復(fù)雜度最大。(A)快速排序 (B)冒泡排序(C)希爾排序(D)堆9.設(shè)某二叉樹中度數(shù)為0的結(jié)點(diǎn)數(shù)為N0,度數(shù)為1的結(jié)點(diǎn)數(shù)為N],度數(shù)為2的結(jié)點(diǎn)數(shù)為n2,則下列等式成立的是()。(A)N0=N1+1 (B)N0=Nl+N2 (C)N°=N2+1 (D)N0=2N1+l10?設(shè)有序順序表中有n個數(shù)據(jù)元素,則利用二分查找法查找數(shù)據(jù)元素X的最多比較次數(shù)不超過()。(A)log2n+1⑻(A)log2n+1⑻log2n-1(C)log2n(D)log2(n+1)二、填空題(42分)1.設(shè)有n個無序的記錄關(guān)鍵字,則直接插入排序的時間復(fù)雜度為 ,快速排TOC\o"1-5"\h\z序的平均時間復(fù)雜度為 。2.設(shè)指針變量p指向雙向循環(huán)鏈表中的結(jié)點(diǎn)X,則刪除結(jié)點(diǎn)X需要執(zhí)行的語句序列為 (設(shè)結(jié)點(diǎn)中的兩個指針域分別為llink和rlink)。3.根據(jù)初始關(guān)鍵字序列(19,22,01,38,10)建立的二叉排序樹的高度為 。4.深度為k的完全二叉樹中最少有 個結(jié)點(diǎn)。5.設(shè)初始記錄關(guān)鍵字序列為(々,K2,…,Kn),則用篩選法思想建堆必須從第 個元素開始進(jìn)行篩選。 '6.設(shè)哈夫曼樹中共有99個結(jié)點(diǎn),則該樹中有 個葉子結(jié)點(diǎn);若采用二叉鏈表作為存儲結(jié)構(gòu),則該樹中有 個空指針域。7.設(shè)有一個順序循環(huán)隊(duì)列中有M個存儲單元,則該循環(huán)隊(duì)列中最多能夠存儲 個隊(duì)列元素;當(dāng)前實(shí)際存儲 個隊(duì)列元素(設(shè)頭指針F指向當(dāng)前隊(duì)頭元素的前一個位置,尾指針指向當(dāng)前隊(duì)尾元素的位置)。&8.設(shè)順序線性表中有n個數(shù)據(jù)元素,則第i個位置上插入一個數(shù)據(jù)元素需要移動表中 個數(shù)據(jù)元素;刪除第i個位置上的數(shù)據(jù)元素需要移動表中 個元素。9. 設(shè)一組初始記錄關(guān)鍵字序列為(20,18,22,16,30,19),則以20為中軸的一趟TOC\o"1-5"\h\z快速排序結(jié)果為 。10.設(shè)一組初始記錄關(guān)鍵字序列為(20,18,22,16,30,19),則根據(jù)這些初始關(guān)鍵字序列建成的初始堆為 。11.設(shè)某無向圖G中有n個頂點(diǎn),用鄰接矩陣A作為該圖的存儲結(jié)構(gòu),則頂點(diǎn)i和頂點(diǎn)j互為鄰接點(diǎn)的條件是 。12.設(shè)無向圖對應(yīng)的鄰接矩陣為A,則A中第i上非0元素的個數(shù) 第i列上非0元素的個數(shù)(填等于,大于或小于)。13.設(shè)前序遍歷某二叉樹的序列為ABCD,中序遍歷該二叉樹的序列為BADC,則后序遍歷該二叉樹的序列為 。14.設(shè)散列函數(shù)H(k)=kmodp,解決沖突的方法為鏈地址法。要求在下列算法劃線處填上正確的語句完成在散列表hashtalbe中查找關(guān)鍵字值等于k的結(jié)點(diǎn),成功時返回指向關(guān)鍵字的指針,不成功時返回標(biāo)志0。typedefstructnode{intkey;structnode*next;}lklist;voidcreatelkhash(lklist*hashtable[])inti,k;Iklist*s;for(i=0;i<m;i++) ;for(i=0;i<n;i++){s=(lklist*)malloc(sizeof(lklist));s->key=a[i];k=a[i]%p;s->next=hashtable[k]; ;}}三、算法設(shè)計(jì)題(28分)1.設(shè)單鏈表中有僅三類字符的數(shù)據(jù)元素(大寫字母、數(shù)字和其它字符),要求利用原單鏈表中結(jié)點(diǎn)空間設(shè)計(jì)出三個單鏈表的算法,使每個單鏈表只包含同類字符。2. 設(shè)計(jì)在鏈?zhǔn)酱鎯Y(jié)構(gòu)上交換二叉樹中所有結(jié)點(diǎn)左右子樹的算法。3. 在鏈?zhǔn)酱鎯Y(jié)構(gòu)上建立一棵二叉排序樹。數(shù)據(jù)結(jié)構(gòu)試卷(一)參考答案一、選擇題TOC\o"1-5"\h\z1.C2.D 3.D 4.B 5.C6.A 7.B 8.A 9.C 10.A二、填空題1.O(n2),O(nlog2n)2. p>llink->rlink=p->rlink;p->rlink->llink=p->rlink3. 34. 2k-15. n/26. 50,517.7.m-1,(R-F+M)%M8.8.n+1-i,n-i9.9.(19,18,16,20,30,22)10.10.(16,18,19,20,32,22)11.11.A[i][j]=112.12.等于13.BDCA14.hashtable[i]=O,hashtable[k]=s三、算法設(shè)計(jì)題1.設(shè)單鏈表中有僅三類字符的數(shù)據(jù)元素(大寫字母、數(shù)字和其它字符),要求利用原單鏈表中結(jié)點(diǎn)空間設(shè)計(jì)出三個單鏈表的算法,使每個單鏈表只包含同類字符。typedefchardatatype;typedefstructnode{datatypedata;structnode*next;}lklist;voidsplit(lklist*head,lklist*&ha,lklist*&hb,lklist*&hc){lklist*p;ha=0,hb=0,hc=0;for(p=head;p!=0;p=head){head=p->next;p->next=0;if(p->data>='A'&&p->data<='Z'){p->next=ha;ha=p;}elseif(p->data>='0'&&p->data<='9'){p->next=hb;hb=p;}else{p->next=hc;hc=p;}}}2.設(shè)計(jì)在鏈?zhǔn)酱鎯Y(jié)構(gòu)上交換二叉樹中所有結(jié)點(diǎn)左右子樹的算法。typedefstructnode{intdata;structnode*lchild,*rchild;}bitree;voids(bitree*bt)bitree*p;if(bt==O)return;s(bt->lchild);s(bt->rchild);p=bt->lchild;bt->lchild=bt->rchild;bt->rchild=p;}3.在鏈?zhǔn)酱鎯Y(jié)構(gòu)上建立一棵二叉排序樹。#definen10typedefstructnode{intkey;structnode*lchild,*rchild;}bitree;voidbstinsert(bitree*&bt,intkey){if(bt==0){bt=(bitree*)malloc(sizeof(bitree));bt?>key=key;bt->lchild=bt->rchild=0;}elseif(bt->key>key)bstinsert(bt->lchild,key);elsebstinsert(bt->rchild,key);}voidcreatebsttree(bitree*&bt){inti;for(i=1;i<=n;i++)bstinsert(bt,random(100));}數(shù)據(jù)結(jié)構(gòu)試卷(二)一、選擇題(30分)數(shù)據(jù)的最小單位是()。(A)數(shù)據(jù)項(xiàng) (B)數(shù)據(jù)類型(C)數(shù)據(jù)元素(D)數(shù)據(jù)變量設(shè)一組初始記錄關(guān)鍵字序列為(50,40,95,20,15,70,60,45),則以增量d=4的一趟希爾排序結(jié)束后前4條記錄關(guān)鍵字為()。(A)40,50,20,95(B)15,40,60,20(C)15,20,40,45(D)45,40,15,20

3設(shè)一組初始記錄關(guān)鍵字序列為(25,50,15,35,80,85,20,40,36,70),其中含有5個長度為2的有序子表,則用歸并排序的方法對該記錄關(guān)鍵字序列進(jìn)行一趟歸并后的結(jié)果為()。(A)15,25,35,50,20,40,80,85,36,70(B)15,25,35,50,80,20,85,40,70,36(C)15,25,35,50,80,85,20,36,40,70(D)15,25,35,50,80,20,36,40,70,85函數(shù)substr("DATASTRUCTURE”,5,9)的返回值為()。(A)"STRUCTURE” (B)"DATA”(C)"ASTRUCTUR” (D)"DATASTRUCTURE”設(shè)一個有序的單鏈表中有n個結(jié)點(diǎn),現(xiàn)要求插入一個新結(jié)點(diǎn)后使得單鏈表仍然保持有序,則該操作的時間復(fù)雜度為()。(A)O(log2n) (B)O(1) (C)O(n2) (D)O(n)設(shè)一棵m叉樹中度數(shù)為0的結(jié)點(diǎn)數(shù)為N0,度數(shù)為1的結(jié)點(diǎn)數(shù)為N|,......,度數(shù)為m的結(jié)點(diǎn)數(shù)為Nm,則N0=()。(A)叫+色+……+Nm (B)l+N2+2N3+3N4+……+(m-1)Nm(C)N2+2N3+3N4+......+(m-1)Nm (D)2N|+3N2+......+(m+1)Nm設(shè)有序表中有1000個元素,則用二分查找查找元素X最多需要比較()次。(A)25 (B)10 (C)7 (D)1&設(shè)連通圖G中的邊集E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},則從頂點(diǎn)a出發(fā)可以得到一種深度優(yōu)先遍歷的頂點(diǎn)序列為()(A)abedfc (B)acfebd (C)aebdfc (D)aedfcb設(shè)輸入序列是1、2、3、……、n,經(jīng)過棧的作用后輸出序列的第一個元素是n,則輸出序列中第i個輸出元素是()(A)n-i (B)n-1-i (C)n+1-i (D)不能確定10設(shè)一組初始記錄關(guān)鍵字序列為(45,80,55,40,42,85),則以第一個記錄關(guān)鍵字45為基準(zhǔn)而得到一趟快速排序的結(jié)果是()(A)40,42,45,55,80,83 (B)42,40,45,80,85,88(C)42,(C)42,40,45,55,80,85(D)42,40,45,85,55,80二、填空題(共30分)1. 設(shè)有一個順序共享?xiàng)[0:n-1],其中第一個棧項(xiàng)指針topi的初值為-1,第二個棧頂指針top2的初值為n,則判斷共享?xiàng)M的條件是 。2.在圖的鄰接表中用順序存儲結(jié)構(gòu)存儲表頭結(jié)點(diǎn)的優(yōu)點(diǎn)是 。3. 設(shè)有一個n階的下三角矩陣A,如果按照行的順序?qū)⑾氯蔷仃囍械脑?包括對角線上元素)存放在n(n+1)個連續(xù)的存儲單元中,則A[i][j]與A[0][0]之間有 個數(shù)據(jù)元素。4. 棧的插入和刪除只能在棧的棧頂進(jìn)行,后進(jìn)棧的元素必定先出棧,所以又把棧稱為 表;隊(duì)列的插入和刪除運(yùn)算分別在隊(duì)列的兩端進(jìn)行,先進(jìn)隊(duì)列的元素必定先出隊(duì)列,所以又把隊(duì)列稱為―_____表。5. 設(shè)一棵完全二叉樹的順序存儲結(jié)構(gòu)中存儲數(shù)據(jù)元素為ABCDEF,則該二叉樹的前序TOC\o"1-5"\h\z遍歷序列為 ,中序遍歷序列為 ,后序遍歷序列為 。6. 設(shè)一棵完全二叉樹有 128個結(jié)點(diǎn),則該完全二叉樹的深度為 ,有 個葉子結(jié)點(diǎn)。7.設(shè)有向圖G的存儲結(jié)構(gòu)用鄰接矩陣A來表示,則A中第i行中所有非零元素個數(shù)之和等于頂點(diǎn)i的 ,第i列中所有非零元素個數(shù)之和等于頂點(diǎn)i的 。8. 設(shè)一組初始記錄關(guān)鍵字序列(々,k2,……,kn)是堆,則對i=1,2,…,n/2而言滿足的條件為 。9.下面程序段的功能是實(shí)現(xiàn)冒泡排序算法,請?jiān)谙聞澗€處填上正確的語句。voidbubble(intr[n]){for(i=1;i<=n-1;i++){for(exchange=0,j=0;j< ;j++)if(r[j]>r[j+1]){temp=r[j+1]; ;r[j]=temp;exchange=1;}if(exchange==0)return;}}10.下面程序段的功能是實(shí)現(xiàn)二分查找算法,請?jiān)谙聞澗€處填上正確的語句。structrecord{intkey;intothers;};intbisearch(structrecordr[],intk)

intlow=0,mid,high=n-1;while(low<=high){if(r[mid].key==k)return(mid+1);elseif( )high=mid-1;elselow=mid+1;}return(0);三、應(yīng)用題(24分)1.設(shè)某棵二叉樹的中序遍歷序列為DBEAC,前序遍歷序列為ABDEC,要求給出該二叉樹的的后序遍歷序列。2.設(shè)無向圖G(如右圖所示),給出該圖的最小生成樹上邊的集合并計(jì)算最小生成樹各邊上的權(quán)值之和。3.設(shè)一組初始記錄關(guān)鍵字序列為(15,17,18,22,35,51,60),要求計(jì)算出成功查找時的平均查找長度。4.4.設(shè)散列表的長度為8,散列函數(shù)H(k)=kmod7,初始記錄關(guān)鍵字序列為(25,31,8,27,13,68),要求分別計(jì)算出用線性探測法和鏈地址法作為解決沖突方法的平均查找長度。四、算法設(shè)計(jì)題(16分)1.設(shè)計(jì)判斷兩個二叉樹是否相同的算法。2.設(shè)計(jì)兩個有序單鏈表的合并排序算法。數(shù)據(jù)結(jié)構(gòu)試卷(二)參考答案一、選擇題1.A2.B1.A2.B3.A4.A5.D6.B7.6.B7.B8.B9.C10.C二、 填空題1. top1+1=top22. 可以隨機(jī)訪問到任一個頂點(diǎn)的簡單鏈表3. i(i+1)/2+j-14. FILO,F(xiàn)IFO5. ABDECF,DBEAFC,DEBFCA6. 8,647. 出度,入度8. ki<=k2i&&ki<=k2i+19.n-i,r[j+1]=r[j]10.mid=(low+high)/2,r[mid].key>k三、 應(yīng)用題1. DEBCA2. E={(1,5),(5,2),(5,3),(3,4)},W=103. ASL=(1*1+2*2+3*4)/7=17/74. ASL1=7/6,ASL2=4/3四、 算法設(shè)計(jì)題1. 設(shè)計(jì)判斷兩個二叉樹是否相同的算法。typedefstructnode{datatypedata;structnode*lchild,*rchild;}bitree;intjudgebitree(bitree*bt1,bitree*bt2){if(bt1==0&&bt2==0)return(1);elseif(bt1==0||bt2==0||bt1->data!=bt2->data)return(O);elsereturn(judgebitree(bt1->lchild,bt2->lchild)*judgebitree(bt1->rchild,bt2->rchild));

2.設(shè)計(jì)兩個有序單鏈表的合并排序算法。voidmergelklist(lklist*ha,lklist*hb,lklist*&he){lklist*s=hc=O;while(ha!=0&&hb!=O)if(ha->data<hb->data){if(s==O)hc=s=ha;else{s->next=ha;s=ha;};ha=ha->next;}else{if(s==0)hc=s=hb;else{s->next=hb;s=hb;};hb=hb->next;}if(ha==0)s->next=hb;elses->next=ha;}數(shù)據(jù)結(jié)構(gòu)試卷(三)一、選擇題(30分)設(shè)一組權(quán)值集合W={2,3,4,5,6},則由該權(quán)值集合構(gòu)造的哈夫曼樹中帶權(quán)路徑長度之和為()。20 (B)30 (C)40 (D)45執(zhí)行一趟快速排序能夠得到的序列是()。[41,12,34,45,27]55[72,63][45,34,12,41]55[72,63,27][63,12,34,45,27]55[41,72][12,27,45,41]55[34,63,72]設(shè)一條單鏈表的頭指針變量為head且該鏈表沒有頭結(jié)點(diǎn),則其判空條件是()。(A)head==0 (B)head->next==O(C)head->next==head(D)head!=O4?時間復(fù)雜度不受數(shù)據(jù)初始狀態(tài)影響而恒為O(nlog2n)的是()。(A)堆排序 (B)冒泡排序 (C)希爾排序(D)快速排序設(shè)二叉樹的先序遍歷序列和后序遍歷序列正好相反,則該二叉樹滿足的條件是()。(A)空或只有一個結(jié)點(diǎn) (B)高度等于其結(jié)點(diǎn)數(shù)(C)任一結(jié)點(diǎn)無左孩子 (D)任一結(jié)點(diǎn)無右孩子—趟排序結(jié)束后不一定能夠選出一個元素放在其最終位置上的是()。(A)堆排序 (B)冒泡排序 (C)快速排序 (D)希爾排序設(shè)某棵三叉樹中有40個結(jié)點(diǎn),則該三叉樹的最小高度為()。(A)3 (B)4 (C)5 (D)68順序查找不論在順序線性表中還是在鏈?zhǔn)骄€性表中的時間復(fù)雜度為()。(A)O(n) (B)O(n2) (C)O(m/2) (D)O(1og2n)二路歸并排序的時間復(fù)雜度為()。(A)O(n) (B)O(n2) (C)O(nlog2n) (D)O(1og2n)深度為k的完全二叉樹中最少有()個結(jié)點(diǎn)。

(A)2k-i-1(B)2(A)2k-i-1(B)2k-i(C)2k-i+1(D)2k-111?設(shè)指針變量front表示鏈?zhǔn)疥?duì)列的隊(duì)頭指針,指針變量rear表示鏈?zhǔn)疥?duì)列的隊(duì)尾指針,指針變量s指向?qū)⒁腙?duì)列的結(jié)點(diǎn)X,則入隊(duì)列的操作序列為()。(A)front->next=s;front=s; (B)s->next=rear;rear=s;(C)rear->next=s;rear=s; (D)s->next=front;front=s;12?設(shè)某無向圖中有n個頂點(diǎn)e條邊,則建立該圖鄰接表的時間復(fù)雜度為()。(A)O(n+e) (B)0(n2) (C)O(ne) (D)0(n3)13?設(shè)某哈夫曼樹中有199個結(jié)點(diǎn),則該哈夫曼樹中有()個葉子結(jié)點(diǎn)。(A)99 (B)100 (C)101 (D)10214.設(shè)二叉排序樹上有n個結(jié)點(diǎn),則在二叉排序樹上查找結(jié)點(diǎn)的平均時間復(fù)雜度為()。(A)O(n) (B)0(n2) (C)O(nlog2n) (D)O(1og2n)15?設(shè)用鄰接矩陣A表示有向圖G的存儲結(jié)構(gòu),則有向圖G中頂點(diǎn)i的入度為()。(A)第i行非0元素的個數(shù)之和 (B)第i列非0元素的個數(shù)之和(C)第i行0元素的個數(shù)之和(D)第i列0元素的個數(shù)之和二、判斷題(20分)調(diào)用一次深度優(yōu)先遍歷可以訪問到圖中的所有頂點(diǎn)。()分塊查找的平均查找長度不僅與索引表的長度有關(guān),而且與塊的長度有關(guān)。()冒泡排序在初始關(guān)鍵字序列為逆序的情況下執(zhí)行的交換次數(shù)最多。()滿二叉樹一定是完全二叉樹,完全二叉樹不一定是滿二叉樹。()設(shè)一棵二叉樹的先序序列和后序序列,則能夠唯一確定出該二叉樹的形狀。()層次遍歷初始堆可以得到一個有序的序列。()7?設(shè)一棵樹T可以轉(zhuǎn)化成二叉樹BT,則二叉樹BT中一定沒有右子樹。()8線性表的順序存儲結(jié)構(gòu)比鏈?zhǔn)酱鎯Y(jié)構(gòu)更好。()9.中序遍歷二叉排序樹可以得到一個有序的序列。()10?快速排序是排序算法中平均性能最好的一種排序。()三、填空題(30分)

TOC\o"1-5"\h\zfor(i=1,t=1,s=0;i<=n;i++){t=t*i;s=s+t;}的時間復(fù)雜度為 。設(shè)指針變量p指向單鏈表中結(jié)點(diǎn)A,指針變量s指向被插入的新結(jié)點(diǎn)X,則進(jìn)行插入操作的語句序列為 (設(shè)結(jié)點(diǎn)的指針域?yàn)閚ext)。設(shè)有向圖G的二元組形式表示為G=(D,R),D={1,2,3,4,5},R={r},r={<1,2>,<2,4>,<4,5>,<1,3>,<3,2>,<3,5>},則給出該圖的一種拓?fù)渑判蛐蛄?。設(shè)無向圖G中有n個頂點(diǎn),則該無向圖中每個頂點(diǎn)的度數(shù)最多是 。設(shè)二叉樹中度數(shù)為0的結(jié)點(diǎn)數(shù)為50,度數(shù)為1的結(jié)點(diǎn)數(shù)為30,則該二叉樹中總共有 個結(jié)點(diǎn)數(shù)。設(shè)F和R分別表示順序循環(huán)隊(duì)列的頭指針和尾指針,則判斷該循環(huán)隊(duì)列為空的條件為。設(shè)二叉樹中結(jié)點(diǎn)的兩個指針域分別為Ichild和rchild,則判斷指針變量p所指向的結(jié)點(diǎn)為TOC\o"1-5"\h\z葉子結(jié)點(diǎn)的條件是 。8簡單選擇排序和直接插入排序算法的平均時間復(fù)雜度為 ??焖倥判蛩惴ǖ目臻g復(fù)雜度平均情況下為 ,最壞的情況下為 。散列表中解決沖突的兩種方法是______和 。四、算法設(shè)計(jì)題(20分)設(shè)計(jì)在順序有序表中實(shí)現(xiàn)二分查找的算法。設(shè)計(jì)判斷二叉樹是否為二叉排序樹的算法。在鏈?zhǔn)酱鎯Y(jié)構(gòu)上設(shè)計(jì)直接插入排序算法數(shù)據(jù)結(jié)構(gòu)試卷(三)參考答案一、選擇題1.D2.A3.A4.A5.D6.D7.B8.A9.C10.B11.C12.A13.B14.D15.B二、判斷題

TOC\o"1-5"\h\z錯 2.對 3對 4.對 5.錯6.錯 7.對 8錯 9.對 10.對三、填空題1. 0(n)2. s->next=p->next;p->next=s3. (1,3,2, 4,5)4. n-15. 1296. F==R7. p->lchild==O&&p->rchild==O8. O(n2)9. O(nlog2n), O(n)10.開放定址法,鏈地址法四、算法設(shè)計(jì)題1. 設(shè)計(jì)在順序有序表中實(shí)現(xiàn)二分查找的算法。structrecord{intkey;intothers;};intbisearch(structrecordr[],intk){intlow=0,mid,high=n-1;while(low<=high){mid=(low+high)/2;if(r[mid].key==k)return(mid+1);elseif(r[mid].key>k)high=mid-1;elselow=mid+1;}return(0);

intminnum=-32768,flag=1;typedefstructnode{intkey;structnode*lchild,*rchild;}bitree;voidinorder(bitree*bt){if(bt!=O){inorder(bt->lchild);if(minnum>bt->key)flag=O;minnum=bt->key;inorder(bt->rchild);}}3. 在鏈?zhǔn)酱鎯Y(jié)構(gòu)上設(shè)計(jì)直接插入排序算法voidstraightinsertsort(lklist*&head){lklist*s,*p,*q;intt;if(head==0||head->next==0)return;elsefor(q=head,p=head->next;p!=0;p=q->next){for(s=head;s!=q->next;s=s->next)if(s->data>p->data)break;if(s==q_>next)q=p;else{q->next=p->next; p->next=s->next; s->next=p;t=p->data;p->data=s->data;s->data=t;}}}數(shù)據(jù)結(jié)構(gòu)試卷(四)一、選擇題(30分)設(shè)某無向圖有n個頂點(diǎn),則該無向圖的鄰接表中有()個表頭結(jié)點(diǎn)。(A)2n (B)n (C)n/2 (D)n(n-1)設(shè)無向圖G中有n個頂點(diǎn),則該無向圖的最小生成樹上有()條邊。(A)n(B)n-1(C)2n(D)2n-1(A)n(B)n-1(C)2n(D)2n-13設(shè)一組初始記錄關(guān)鍵字序列為(60,80,55,40,42,85),則以第一個關(guān)鍵字45為基準(zhǔn)而得到的一趟快速排序結(jié)果是()。(A)40, 42,60,55,80,85 (B)42,45, 55, 60, 85,80(C)42, 40,55,60,80,85 (D)42,40, 60, 85, 55,80()二叉排序樹可以得到一個從小到大的有序序列。(A)先序遍歷 (B)中序遍歷(C)后序遍歷(D)層次遍歷設(shè)按照從上到下、從左到右的順序從1開始對完全二叉樹進(jìn)行順序編號,則編號為i結(jié)點(diǎn)的左孩子結(jié)點(diǎn)的編號為()。(A)2i+1 (B)2i (C)i/2 (D)2i-1程序段s=i=0;do{i=i+1;s=s+i;}while(i<=n);的時間復(fù)雜度為()。(A)O(n) (B)O(nlog2n) (C)O(n2) (D)O(ns/2)7?設(shè)帶有頭結(jié)點(diǎn)的單向循環(huán)鏈表的頭指針變量為head,則其判空條件是()。(A)head==0 (B)head->next==0(C)head->next==head (D)head!=0&設(shè)某棵二叉樹的高度為10,則該二叉樹上葉子結(jié)點(diǎn)最多有()。(A)20 (A)20 (B)256(C)512 (D)10249.設(shè)一組初始記錄關(guān)鍵字序列為(13,18,24,35,47,50,62,83,90,115,134),則利用二分法查找關(guān)鍵字90需要比較的關(guān)鍵字個數(shù)為()。(A)1(B)(A)1(B)2(C)3 (D)410?設(shè)指針變量top指向當(dāng)前鏈?zhǔn)綏5臈m?,則刪除棧頂元素的操作序列為()。(B)top=top-1;(A)top=top+1;(B)top=top-1;(C)top->next=top;(D)top=top->next;二、判斷題(20分)不論是入隊(duì)列操作還是入棧操作,在順序存儲結(jié)構(gòu)上都需要考慮'溢出"情況。()當(dāng)向二叉排序樹中插入一個結(jié)點(diǎn),則該結(jié)點(diǎn)一定成為葉子結(jié)點(diǎn)。()設(shè)某堆中有n個結(jié)點(diǎn),則在該堆中插入一個新結(jié)點(diǎn)的時間復(fù)雜度為O(log2n)。()完全二叉樹中的葉子結(jié)點(diǎn)只可能在最后兩層中出現(xiàn)。()5?哈夫曼樹中沒有度數(shù)為1的結(jié)點(diǎn)。()

對連通圖進(jìn)行深度優(yōu)先遍歷可以訪問到該圖中的所有頂點(diǎn)。()先序遍歷一棵二叉排序樹得到的結(jié)點(diǎn)序列不一定是有序的序列。()8由樹轉(zhuǎn)化成二叉樹,該二叉樹的右子樹不一定為空。()線性表中的所有元素都有一個前驅(qū)元素和后繼元素。()帶權(quán)無向圖的最小生成樹是唯一的。()三、填空題(30分)1.設(shè)指針變量p指向雙向鏈表中的結(jié)點(diǎn)A,指針變量s指向被插入的結(jié)點(diǎn)X,則在結(jié)點(diǎn)A的后面插入結(jié)點(diǎn)X的操作序列為 =p;s->right=p->right; =s;p->right->left=s;(設(shè)結(jié)點(diǎn)中的兩個指針域分別為left和right)。2.設(shè)完全有向圖中有n個頂點(diǎn),則該完全有向圖中共有 條有向條;設(shè)完全無向圖中有n個頂點(diǎn),則該完全無向圖中共有 條無向邊。3.設(shè)關(guān)鍵字序列為(環(huán)K2,…,Kn),則用篩選法建初始堆必須從第 個元素開始進(jìn)行篩選。TOC\o"1-5"\h\z4. 解決散列表沖突的兩種方法是 和 。5.設(shè)一棵三叉樹中有50個度數(shù)為0的結(jié)點(diǎn),21個度數(shù)為2的結(jié)點(diǎn),則該二叉樹中度數(shù)為3的結(jié)點(diǎn)數(shù)有 個。6.高度為h的完全二叉樹中最少有 個結(jié)點(diǎn),最多有 個結(jié)點(diǎn)。7.設(shè)有一組初始關(guān)鍵字序列為(24,35,12,27,18,26),則第3趟直接插入排序結(jié)束后的結(jié)果的是 。8.設(shè)有一組初始關(guān)鍵字序列為(24,35,12,27,18,26),則第3趟簡單選擇排序結(jié)束后的結(jié)果的是 。9.設(shè)一棵二叉樹的前序序列為ABC,則有 種不同的二叉樹可以得到這種序列。10.下面程序段的功能是實(shí)現(xiàn)一趟快速排序,請?jiān)谙聞澗€處填上正確的語句。structrecord{intkey;datatypeothers;};voidquickpass(structrecordr[],ints,intt,int&i){intj=t;structrecordx=r[s];i=s;while(i<j)

while(j<j&&r[j].key>x.key)j=j-1; if(i<j){r[i]=r[j];i=i+1;}while( )i=i+1;if(i<j){r[j]=r[i];j=j-1;}}}四、算法設(shè)計(jì)題(20分)1. 設(shè)計(jì)在鏈?zhǔn)浇Y(jié)構(gòu)上實(shí)現(xiàn)簡單選擇排序算法。2. 設(shè)計(jì)在順序存儲結(jié)構(gòu)上實(shí)現(xiàn)求子串算法。3. 設(shè)計(jì)求結(jié)點(diǎn)在二叉排序樹中層次的算法。數(shù)據(jù)結(jié)構(gòu)試卷(四)一、選擇題1.B2.B3.C4.B5.B6.A7.C8.C9.B10.D二、判斷題1.對2.對3.對4.對5.對6.對7.對8.錯9?錯10.錯三、填空題1. s->left=p,p->right2. n(n-1),n(n-1)/23. n/24. 4. 開放定址法,鏈地址法

5.5.146.6.2h-1, 2h-17.7.(12,24,35,27,18,26)8.8.(12,18,24,27,35,26)9.9.510.10.i<j&&r[i].key<x.key,r[i]=x四、算法設(shè)計(jì)題1. 設(shè)計(jì)在鏈?zhǔn)浇Y(jié)構(gòu)上實(shí)現(xiàn)簡單選擇排序算法。voidsimpleselectsorlklist(lklist*&head){lklist*p,*q,*s;intmin,t;if(head==O||head->next==0)return;for(q=head;q!=0;q=q->next){min=q->data;s=q;for(p=q->next;p!=0;p=p->next)if(min>p->data){min=p->data;s=p;}if(s!=q){t=s->data;s->data=q->data;q->data=t;}}}2. 設(shè)計(jì)在順序存儲結(jié)構(gòu)上實(shí)現(xiàn)求子串算法。voidsubstring(chars[],longstart,longcount,chart[]){longi,j,length=strlen(s);if(start<1||start>length)printf("Thecopypositioniswrong");elseif(start+count-1>length)printf("Toocharacterstobecopied");else{for(i=start-1,j=0;i<start+count-1;i++,j++)t[j]=s[i];t[j]='\0';}intlev=O;typedefstructnode{intkey;structnode*lchild,*rchild;}bitree;voidlevel(bitree*bt,intx){if(bt!=0){lev++;if(bt->key==x)return;elseif(bt->key>x)level(bt->lchild,x);elselevel(bt->rchild,x);}}數(shù)據(jù)結(jié)構(gòu)試卷(五)一、選擇題(30分)1. 1.字符串的長度是指((A)串中不同字符的個數(shù)(C)串中所含字符的個數(shù))。(B)串中不同字母的個數(shù)(D)串中不同數(shù)字的個數(shù)2.建立一個長度為n的有序單鏈表的時間復(fù)雜度為()(A)O(n) (B)O(1) (C)O(n2) (D)O(log2n)3.兩個字符串相等的充要條件是()。(A)兩個字符串的長度相等 (B)兩個字符串中對應(yīng)位置上的字符相等(C)同時具備(A)和(B)兩個條件 (D)以上答案都不對4.設(shè)某散列表的長度為100,散列函數(shù)H(k)=k%P,則P通常情況下最好選擇()。(A)99 (B)97 (C)91 (D)935.在二叉排序樹中插入一個關(guān)鍵字值的平均時間復(fù)雜度為()。(A)O(n) (B)O(1og2n) (C)O(nlog2n) (D)0(n2)6.設(shè)一個順序有序表A[1:14]中有14個元素,則采用二分法查找元素A[4]的過程中比較元素的順序?yàn)?)。(A)A[1],(A)A[1],A[2],A[3],A[4](B)A[1],A[14],A[7],A[4]7.設(shè)一棵完全二叉樹中有65個結(jié)點(diǎn),則該完全二叉樹的深度為()。(A)8 (B)7 (C)6 (D)58.設(shè)一棵三叉樹中有2個度數(shù)為1的結(jié)點(diǎn),2個度數(shù)為2的結(jié)點(diǎn),2個度數(shù)為3的結(jié)點(diǎn),則該三叉鏈權(quán)中有()個度數(shù)為0的結(jié)點(diǎn)。(A)5 (B)6 (C)7 (D)89. 設(shè)無向圖G中的邊的集合E={(a,b),(a,e),(a,c),(b,e),(e,d),(d,f),(f,c)},則從頂點(diǎn)a出發(fā)進(jìn)行深度優(yōu)先遍歷可以得到的一種頂點(diǎn)序列為()。(A)aedfcb (B)acfebd (C)aebcfd (D)aedfbc10.隊(duì)列是一種()的線性表。(A)先進(jìn)先出 (B)先進(jìn)后出 (C)只能插入 (D)只能刪除二、 判斷題(20分)1.如果兩個關(guān)鍵字的值不等但哈希函數(shù)值相等,則稱這兩個關(guān)鍵字為同義詞。()2.設(shè)初始記錄關(guān)鍵字基本有序,則快速排序算法的時間復(fù)雜度為O(nlog2n)。()3. 分塊查找的基本思想是首先在索引表中進(jìn)行查找,以便確定給定的關(guān)鍵字可能存在的塊號,然后再在相應(yīng)的塊內(nèi)進(jìn)行順序查找。(4. 二維數(shù)組和多維數(shù)組均不是特殊的線性結(jié)構(gòu)。()5.向二叉排序樹中插入一個結(jié)點(diǎn)需要比較的次數(shù)可能大于該二叉樹的高度。()6.如果某個有向圖的鄰接表中第i條單鏈表為空,則第i個頂點(diǎn)的出度為零。()7. 非空的雙向循環(huán)鏈表中任何結(jié)點(diǎn)的前驅(qū)指針均不為空。()8. 不論線性表采用順序存儲結(jié)構(gòu)還是鏈?zhǔn)酱鎯Y(jié)構(gòu),刪除值為X的結(jié)點(diǎn)的時間復(fù)雜度均為O(n)。(9.圖的深度優(yōu)先遍歷算法中需要設(shè)置一個標(biāo)志數(shù)組,以便區(qū)分圖中的每個頂點(diǎn)是否被訪問過。(10.稀疏矩陣的壓縮存儲可以用一個三元組表來表示稀疏矩陣中的非0元素。()三、 填空題(30分)1.1. 設(shè)一組初始記錄關(guān)鍵字序列為(49,38,65,97,76,13,27,50),則以d=4為增量的一趟希爾排序結(jié)束后的結(jié)果為 。

2.下面程序段的功能是實(shí)現(xiàn)在二叉排序樹中插入一個新結(jié)點(diǎn),請?jiān)谙聞澗€處填上正確的內(nèi)容。typedefstructnode{intdata;structnode*lchild;structnode*rchild;}bitree;voidbstinsert(bitree*&t,intk){if(t==0){ ;t->data=k;t->lchild=t->rchild=O;}elseif(t->data>k)bstinsert(t->lchild,k);else

溫馨提示

  • 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

提交評論