數(shù)據(jù)結(jié)構(gòu)(中國海洋大學)智慧樹知到答案章節(jié)測試2023年_第1頁
數(shù)據(jù)結(jié)構(gòu)(中國海洋大學)智慧樹知到答案章節(jié)測試2023年_第2頁
數(shù)據(jù)結(jié)構(gòu)(中國海洋大學)智慧樹知到答案章節(jié)測試2023年_第3頁
數(shù)據(jù)結(jié)構(gòu)(中國海洋大學)智慧樹知到答案章節(jié)測試2023年_第4頁
數(shù)據(jù)結(jié)構(gòu)(中國海洋大學)智慧樹知到答案章節(jié)測試2023年_第5頁
免費預覽已結(jié)束,剩余6頁可下載查看

下載本文檔

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

文檔簡介

第一章測試圖書館的數(shù)目檢索系統(tǒng)采用

關(guān)系的數(shù)據(jù)結(jié)構(gòu)。

A:圖狀

B:樹形

C:線性

D:集合

答案:C

是相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合。

A:數(shù)據(jù)項

B:數(shù)據(jù)元素

C:數(shù)據(jù)

D:數(shù)據(jù)結(jié)構(gòu)

答案:D(

)是一個值的集合和定義在這個值集上的一組操作的總稱。

A:數(shù)據(jù)類型

B:數(shù)據(jù)項

C:數(shù)據(jù)結(jié)構(gòu)

D:數(shù)據(jù)元素

答案:A算法的確定性是指

A:當輸入數(shù)據(jù)非法時,算法也能作出反應或進行處理

B:在任何情況下,算法不會出現(xiàn)死循環(huán)

C:算法中的每一條指令必須有確切的含義

D:算法中沒有邏輯錯誤

答案:C第二章測試線性表中的數(shù)據(jù)元素有一個前驅(qū)多個后繼。

A:錯

B:對

答案:A用順序結(jié)構(gòu)存儲,刪除最后一個結(jié)點時,(

A:可能會移動其它結(jié)點位置

B:一定不會移動其它結(jié)點位置

C:會移動其它結(jié)點位置

D:其它

答案:B鏈表中邏輯上相鄰的元素的物理地址__________相鄰。

A:一定不

B:必定

C:其它

D:不一定

答案:D1.假設有兩個按元素值遞增有序排列的線性表A和B,均以單鏈表作存儲結(jié)構(gòu),請編寫算法將A表和B表歸并成一個按元素值遞減有序(即非遞增有序,允許表中含有值相同的元素)排列的線性表C,并要求利用原表(即A表和B表)的結(jié)點空間構(gòu)造C表。//將合并逆置后的結(jié)果放在C表中,并刪除B表StatusListMergeOppose_L(LinkList&A,LinkList&B,LinkList&C){

LinkListpa,pb,qa,qb;

pa=A;

pb=B;

qa=pa;

//保存pa的前驅(qū)指針

qb=pb;

//保存pb的前驅(qū)指針

pa=pa->next;

pb=pb->next;

A->next=NULL;

C=A;

while(pa&&pb){

if(pa->datadata){

qa=pa;

pa=pa->next;

qa->next=A->next;

//將當前最小結(jié)點插入A表表頭

A->next=qa;

}

else{

qb=pb;

pb=pb->next;

(

)//將當前最小結(jié)點插入B表表頭

A->next=qb;

}

}

while(pa){

qa=pa;

pa=pa->next;

qa->next=A->next;

A->next=qa;

}

while(pb){

qb=pb;

pb=pb->next;

qb->next=A->next;

A->next=qb;

}

pb=B;

free(pb);

returnOK;}

A:qb->next=A->next

B:qa->next=A;

C:qb->next=A;

D:qa->next=A->next

答案:A假設某個單向循環(huán)鏈表的長度大于1,且表中既無頭結(jié)點也無頭指針。已知s為指向鏈表中某個結(jié)點的指針,試編寫算法在鏈表中刪除指針s所指結(jié)點的前驅(qū)結(jié)點。StatusListDelete_CL(LinkList&S){

LinkListp,q;

if(S==S->next)returnERROR;

q=S;

p=S->next;

while(

){

q=p;

p=p->next;

}

q->next=p->next;

free(p);

returnOK;}

A:p->next==S

B:p->next!=S

C:p!=S

D:p==S

答案:B第三章測試若以S和X分別表示進棧和退棧操作,則對初始狀態(tài)為空的??梢赃M行的棧操作系列合法的是(

);

A:SXSSXXXX

B:SXSXXSSX

C:SXXSXSSX

D:SSSXXSXX

答案:D設計一個迷宮求解的算法,采用___________數(shù)據(jù)結(jié)構(gòu)最佳。

A:隊列

B:線性表的順序存儲結(jié)構(gòu)

C:線性表的鏈式存儲結(jié)構(gòu)

D:棧

答案:D循環(huán)隊列存儲在數(shù)組A[0..m-1],則出隊時的操作為(

A:front=(front+1)modm

B:front=(front+1)mod(m-1)

C:front=front+1

D:front=(frontmodm)+1

答案:A1.試寫一個算法,識別依次讀入的一個以@為結(jié)束符的字符序列是否為形如‘序列1&序列2’模式的字符序列。其中序列1和序列2中都不含字符‘&’,且序列2是序列1的逆序列。例如,‘a(chǎn)+b&b+a’是屬該模式的字符序列,而‘1+3&3-1’則不是。BOOLSymmetry(chara[]){

inti=0;

Stacks;

InitStack(s);

ElemTypex;

while(a[i]!=’&’&&a[i]){

_________

i++;

}

if(!a[i])returnFALSE;

i++;

while(a[i]){

Pop(s,x);

if(x!=a[i]){

DestroyStack(s);

returnFALSE;

}

i++;

}

returnTRUE;}

A:Pop(s,a[i])

B:Push(s,a[i])

C:Pop(s,a[i++])

D:Push(s,a[i++])

答案:BStatus

SymmetryString(char

p){Queue

q;if(!InitQueue(q))

return

0;Stack

s;InitStack(s);ElemType

e1,e2;while(p){Push(s,p);EnQueue(q,p);p++;}while(!StackEmpty(s)){

(

)

DeQueue(q,e2);if(e1!=e2)

return

FALSE;}return

OK;}

A:Pop(s,e1);

B:P–P–P–P–P–P–P–P–

C:EnQueue(q,p)

D:Push(s,p);

答案:A第四章測試設s=’IAMASTUDENT’,t=’GOOD’,則Concat(Substring(s,6,2),Concat(t,SubString(s,7,8)))=(

)

A:STGOODSTUDENT

B:AGOODWORKER

C:AGOODWORKER

D:AGOODSTUDENT

答案:D空串與空格串是相同的,這種說法____。

A:正確

B:不正確

答案:B設串sl=″DataStructureswithJava″,s2=“it″,則子串定位函數(shù)index(s1,s2)的值為();

A:18

B:17

C:15

D:16

答案:A串的長度是指(

A:串中所含不同字符的個數(shù)

B:串中所含不同字母的個數(shù)

C:串中所含字符的個數(shù)

D:串中所含非空格字符的個數(shù)

答案:C串是一種數(shù)據(jù)對象和操作都特殊的線性表。

A:對

B:錯

答案:A第五章測試數(shù)組A中,每個元素A的長度為3個字節(jié),行下標i從1到8,列下標j從1到10,從首地址SA開始連續(xù)存放在存儲器內(nèi),存放該數(shù)組至少需要的單元數(shù)是______。

A:240

B:270

C:80

D:100

答案:A假設有二維數(shù)組A6×8,每個元素用相鄰的6個字節(jié)存儲,存儲器按字節(jié)編址。已知A的起始存儲位置為1000,計算數(shù)組A按行存儲時元素A[14]第一個字節(jié)的位置(

);

A:1030

B:1024

C:1072

D:1018

答案:C若采用三元組壓縮技術(shù)存儲稀疏矩陣,只要把每個元素的行下標和列下標互換,就完成了對該矩陣的轉(zhuǎn)置運算,這種觀點(

)。

A:錯誤

B:正確

答案:A廣義表((()),a,((b,c),(),d),(((e))))的長度為(

);

A:4

B:3

C:5

D:2

答案:A下面說法不正確的是(

)。

A:廣義表難以用順序存儲結(jié)構(gòu)

B:廣義表可以是一個多層次的結(jié)構(gòu)

C:廣義表的表尾總是一個廣義表

D:廣義表的表頭總是一個廣義表

答案:D1.試按教科書5.5節(jié)圖5.10所示的結(jié)點結(jié)構(gòu)編寫復制廣義表的遞歸算法。//由廣義表L復制廣義表TintCopyGList(GList&T,GList&L){

if(!L)T=NULL;

else{

T=newGLNode;

if(!T)exit(OVERFLOW);

T->tag=L->tag;

if(L->tag==ATOM)T->atom=L->atom;

else{

________

CopyGList(T->tp,L->tp);

}

}

returnOK;}

A:A.CopyGList(T,L)

B:CopyGList(L->tp,T->tp);

C:CopyGList(T->hp,L->hp);

D:CopyGList(L->hp,T->hp)

答案:C第六章測試已知一棵樹邊的集合為{<I,M>,<I,N>,<E,I>,<B,E>,<B,D>,<A,B>,<G,J>,<G,K>,<C,G>,<C,F>,<H,L>,<C,H>,<A,C>},問這棵樹中結(jié)點G的雙親結(jié)點為(

)

A:A

B:C

C:I

D:B

答案:B一棵二叉樹中,葉子的個數(shù)為10,則其度為2的結(jié)點的個數(shù)為(

);

A:9

B:12

C:10

D:11

答案:A假如一棵二叉樹的中序遍歷結(jié)果為ABCD,則結(jié)點A和結(jié)點D的關(guān)系一定不是(

);

A:結(jié)點A是結(jié)點D的右子樹上的結(jié)點

B:結(jié)點A與結(jié)點D具有共同的雙親的右子樹上的結(jié)點

C:結(jié)點A是結(jié)點D的左子樹上的結(jié)點

D:結(jié)點A是結(jié)點D的雙親結(jié)點

答案:A已知一棵樹邊的集合為{<I,M>,<I,N>,<E,I>,<B,E>,<B,D>,<A,B>,<G,J>,<G,K>,<C,G>,<C,F>,<H,L>,<C,H>,<A,C>},將此樹轉(zhuǎn)化為二叉樹后,E的左孩子為(

);

A:I

B:C

C:B

D:A

答案:A一棵哈夫曼樹有17個結(jié)點,則其葉子結(jié)點的個數(shù)是

_________。

A:10

B:7

C:9

D:8

答案:C寫遞歸算法,將二叉樹中所有結(jié)點的左、右子樹相互交換。StatusExchangeBiTree(BiTree&T){

BiTreep;

if(T){

p=T->lchild;

T->lchild=T->rchild;

T->rchild=p;

ExchangeBiTree(T->lchild);

__________

}

returnOK;}

A:A.ExchangeBiTree(p);

B:ExchangeBiTree(T->rchild);

C:ExchangeBiTree(T);

D:ExchangeBiTree(T->lchild->rchild)

答案:B試寫一個算法,為一棵二叉樹建立后序線索二叉樹。StatusPostOrderThreading(BiThrTree&T,BiThrTree&pre);//首先建立后序線索樹StatusFindNextInBiThrTree(BiThrTree&q,TElemType*p);//再進行查找

//后序線索二叉樹的算法StatusPostOrderThreading(BiThrTree&Thrt,BiThrTree&T){

BiThrTreepre;

Thrt=newBiThrNode;//為線索二叉樹建立頭結(jié)點

if(!Thrt)exit(OVERFLOW);

Thrt->LTag=Link;

Thrt->RTag=Thread;

Thrt->rchild=Thrt;//右子樹回指

if(!T)Thrt->lchild=Thrt;//若二叉樹空,左子樹回指

else{

Thrt->lchild=T;

pre=Thrt;

PostThreading(T,pre);//后序遍歷進行后序線索化

pre->rchild=Thrt;//最后一個結(jié)點線索化

pre->RTag=Thread;

Thrt->rchild=pre;

}

returnOK;}

StatusPostThreading(BiThrTree&T,BiThrTree&pre){

if(T){

if(T->LTag==Link)PostThreading(T->lchild,pre);

if(T->RTag==Link)PostThreading(T->rchild,pre);

if(!T->lchild){

T->LTag=Thread;

___________

}

if(pre&&!pre->rchild){

pre->RTag=Thread;

pre->rchild=T;

}

pre=T;

}

returnOK;}

A:T->rchild=pre

B:pre->lchild=T

C:T->lchild=pre;

D:pre->rchild=T

答案:C1.編寫遞歸算法,將二叉樹中所有結(jié)點的左、右子樹相互交換。StatusExchangeBiTree(BiTree&T){

BiTreep;

if(T){

p=T->lchild;

T->lchild=T->rchild;

T->rchild=p;

ExchangeBiTree(T->lchild);

}

returnOK;}

A:ExchangeBiTree(T);

B:ExchangeBiTree(T->rchild);

C:ExchangeBiTree(T->lchild->rchild);

D:ExchangeBiTree(p);

答案:B第七章測試下圖中結(jié)點B的出度為(

)

A:1

B:0

C:3

D:2

答案:A對于一個具有n個頂點的無向圖,若采用鄰接矩陣表示,則該矩陣的大小為(

);

A:(n-1)×(n-1)

B:(n-1)×n

C:n×(n+1)

D:n×n

答案:D采用鄰接表存儲的圖的寬度優(yōu)先遍歷算法類似于二叉樹的(

)。

A:先序遍歷

B:層次遍歷

C:后序遍歷

D:中序遍歷

答案:B下面的無向帶權(quán)圖的最小生成樹包含的邊有(

)

A:aggffddccbbe

B:aeeddccbegdf

C:aeebbccddfeg

D:aegegfebbccd

答案:B判定一個有向圖是否存在回路除了可以利用拓撲排序方法外,還可以利用(

);

A:求最短路徑的Dijkstm方法

B:深度優(yōu)先遍歷算法

C:寬度優(yōu)先遍歷算法

D:求關(guān)鍵路徑的方法

答案:B編寫算法實現(xiàn)建立圖的鄰接表

StatusCreateAG(ALGraph&G){

intn,e,k,i,j;

cout<<“請輸入頂點數(shù):”;

cin>>n;

cout<<“請輸入邊數(shù):”;

cin>>e;

G.vernum=n;

G.arcnum=e;

//建立頂點數(shù)組

for(k=0;k<G.vernum;k++){

cout<<“請輸入頂點信息:”;

cin>>G.vertices[k].data;

G.vertices[k].firstarc=NULL;

}

//建立鄰接表

VertexTypev1,v2;

ArcNodep,q;

for(k=0;k<G.arcnum;k++){

cout<<“請輸入弧的始點和終點信息,中間用空格分開:”;

cin>>v1>>v2;

i=LocateVex(G,v1);

if(i<0||i>G.vernum-1)returnERROR;

j=LocateVex(G,v2);

if(j<0||j>G.vernum-1)returnERROR;

if(i==j)returnERROR;

p=newArcNode;

if(!p)returnERROR;

p->adjvex=j;

p->nextarc=NULL;

q=G.vertices[i].firstarc;

if(!q)G.vertices[i].firstarc=p;

else{

while(q->nextarc)__________

//指針定位于鄰接表的尾結(jié)點

q->nextarc=p;

}

}

returnOK;}

A:p=p->nextarc;

B:q=q->nextarc

C:q->nextarc=p->nextarc

D:q->nextarc=NULL;

答案:B編寫算法實現(xiàn)從鄰接表中取出某個頂點V的存儲位置。intLocateVex(ALGraph&G,VertexTypev){

inti=0;

while(______&&i<G.vernum)i++;

if(G.vertices[i].data==v)returni;

elsereturn-1;}

A:G.vertices[i].data==v

B:A.G.vertices[i++].data!=v

C:G.vertices[++i].data!=v

D:G.vertices[i].data!=v

答案:D第八章測試

1.對線性表進行二分查找時,要求線性表必須(

)。

A:以順序方式存儲,且結(jié)點按關(guān)鍵字有序排序

B:以鏈接方式存儲

C:以順序方式存儲

D:以鏈接方式存儲,且結(jié)點按關(guān)鍵字有序排序

答案:A

2.下列描述中不符合二叉排序樹特點的是

(

)

A:根結(jié)點的關(guān)鍵字大于左、右子樹中所有結(jié)點的關(guān)鍵字

B:右字樹中所有結(jié)點的關(guān)鍵字大于根節(jié)點的關(guān)鍵字C.

C:關(guān)鍵字插入的順序影響二叉排序樹的形態(tài)

D:左子樹中所有結(jié)點的關(guān)鍵字小于根結(jié)點的關(guān)鍵字

答案:A

3.設哈希表長m=14,哈希函數(shù)H(key)=key%11。表中已有4個結(jié)點:

addr(15)=4;

addr(38)=5;

addr(61)=6;

addr(84)=7

如用二次探測再散列處理沖突,關(guān)鍵字為49的結(jié)點的地址是(

)

A:8

B:9

C:5

D:3

答案:B

4.試將折半查找的算法改寫成遞歸算法。

Int

bisearch

(sqlistL,intlow,inthigh

,

elemtypex

)

{

If(low>high)

return(

0

);

else

{

if(L.data[mid]=

=x)

return

(mid);

elseif

(L.data[mid]>x)

bisearch(L,low,mid-1,x);

else

bisearch(L,mid+1,high,x);

}

}//bisearch

A:mid!=(low+high);

B:mid=(low+high)/2

C:mid>(low+high)/2;

D:A.mid<

(low+high)/2

答案:B5.設計算法判定給定二叉樹是否為二叉排序樹。

voidBSTree(BiTreet,int&flag,int&last);//聲明StatusIsBSTree(BiTreet){

intflag=1;

intlast=0;

BSTree(t,flag,last);

returnflag;}voidBSTree(BiTreet,int&flag,int&last)//取地址不需要返回值{

if(t->lchild&&flag)BSTree(t->lchild,flag,last);//遍歷左子樹

if(t->data.key>last&&flag)

last=t->data.key;elseflag=0;//last原為父節(jié)點值,但到了樹葉節(jié)點后被樹葉節(jié)點的key值覆蓋,然后開始向上反饋keyif(t->rchild&&flag)

}

A:BSTree(t->lchild,flag,last);

B:BSTree(t->rchild,last,flag);

C:BSTree(t->rchild,flag,last);

D:BSTree(t->lchild,last,flag);

答案:C

m階B_樹中的m是指?

A:非終端結(jié)點中關(guān)鍵字的個數(shù)

B:每個結(jié)點至多有m棵子樹

C:m階B_樹的深度(或高度)

D:每個結(jié)點至少有m棵子樹

答案:B第九章測試

1.設一組初始記錄關(guān)鍵字序列為(50,40,95,20,15,70,60,45),則以增量d=4的一趟希爾排序結(jié)束后前4條記錄關(guān)鍵字為(

)。

A:15,20,40,45

B:15,40,60,20

C:45,40,15,20

D:40,50,20,95

答案:B

2.快速排序方法在情況下最不利于發(fā)揮其長處。(

)

A:要排序的數(shù)據(jù)量太大。

B:要排序的數(shù)據(jù)中含有多個相同值

C:要排序的數(shù)據(jù)個數(shù)為奇數(shù)

D:要排序的數(shù)據(jù)已基本有序

答案:D

一組記錄的排序碼為(46,79,56,38,40,84),則利用堆排序的方法建立的初始推為(

)。

A:84,56,79,40,46,38

B:84,79,56,38,40,46

C:79

溫馨提示

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

評論

0/150

提交評論