




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)結(jié)構(gòu)(Java語(yǔ)言描述)習(xí)題及答案
1.5習(xí)題
填空題
1.數(shù)據(jù)的物理結(jié)構(gòu)包括順序結(jié)構(gòu)的表示和存儲(chǔ)和鏈?zhǔn)浇Y(jié)構(gòu)的表示和存儲(chǔ)。
2.對(duì)于給定的n個(gè)元素,可以構(gòu)造出的邏輯結(jié)構(gòu)有(集合結(jié)構(gòu)),(線(xiàn)性結(jié)構(gòu)),(樹(shù)
型結(jié)構(gòu)),(圖型結(jié)構(gòu))四種。
3.一個(gè)算法具有5個(gè)特性:(有窮性)、(確定性)、(可行性),有零個(gè)或多個(gè)
輸入、有一個(gè)或多個(gè)輸出。
4.抽象數(shù)據(jù)類(lèi)型被形式地定義為(D,S,P),其中D是(數(shù)據(jù)元素)的有限
集合,S是D上的(關(guān)系)有限集合,P是對(duì)D的(基本操作)集合。
5.數(shù)據(jù)結(jié)構(gòu)主要包括數(shù)據(jù)的(邏輯結(jié)構(gòu))、數(shù)據(jù)的(存儲(chǔ)結(jié)構(gòu))和數(shù)據(jù)的(操
作)這三個(gè)方面的內(nèi)容。
6.一個(gè)算法的效率可分為(時(shí)間)效率和(空間)效率。
二.單項(xiàng)選擇題
1.線(xiàn)性結(jié)構(gòu)是數(shù)據(jù)元素之間存在一種(D)。
A.一對(duì)多關(guān)系B.多對(duì)多關(guān)系C.多對(duì)一關(guān)系D.一對(duì)一關(guān)系
2.數(shù)據(jù)結(jié)構(gòu)中,與所使用的計(jì)算機(jī)無(wú)關(guān)的是數(shù)據(jù)的(C)結(jié)構(gòu)。
A.存儲(chǔ)B.物理C.邏輯D.物理和存儲(chǔ)
3.算法分析的目的是(B)。
A.找出數(shù)據(jù)結(jié)構(gòu)的合理性B.分析算法的效率以求改進(jìn)
C.研究算法中的輸入和輸出的關(guān)系D.分析算法的易懂性和文檔性
4.算法分析的兩個(gè)主要方面是(A)。
A.空間復(fù)雜性和時(shí)間復(fù)雜性B.正確性和簡(jiǎn)明性
C.可讀性和文檔性D.數(shù)據(jù)復(fù)雜性和程序復(fù)雜性
5.計(jì)算機(jī)算法指的是(C)。
A.計(jì)算方法B.排序方法
C.解決問(wèn)題的有限運(yùn)算序列D.調(diào)度方法
6.從邏輯上可以把數(shù)據(jù)結(jié)構(gòu)分為(A)。
1
A.線(xiàn)性結(jié)構(gòu)和非線(xiàn)性結(jié)構(gòu)B.緊湊結(jié)構(gòu)和非緊湊結(jié)構(gòu)
C.動(dòng)態(tài)結(jié)構(gòu)和靜態(tài)結(jié)構(gòu)D.內(nèi)部結(jié)構(gòu)和外部結(jié)構(gòu)
三.計(jì)算題
1.計(jì)算機(jī)執(zhí)行下面的語(yǔ)句時(shí),語(yǔ)句s的執(zhí)行次數(shù)為((n-2)(n+3)/2)。
for(i=l;i<n-l;i++)
for(j=n;j>=i;j-)
2.在有n個(gè)選手參加的單循環(huán)賽中,總共將進(jìn)行(n(n-l)/2)場(chǎng)比賽。
3.試給出下面兩個(gè)算法的時(shí)間復(fù)雜度。
(1)for(i=l;i<=n;i++)0(n)
x=x+l;
(2)for(i=l;i<=n;i++)0(n2)
for(j=l;j<=n;j++)
x=x+l;
2.4習(xí)題
一.填空題
1.線(xiàn)性表的兩種存儲(chǔ)結(jié)構(gòu)分別為(順序存儲(chǔ))和(鏈?zhǔn)酱鎯?chǔ))。
2.順序表中,邏輯上相鄰的元素,其物理位置一一定相鄰。在單鏈表中,
邏輯上相鄰的元素,其物理位置不一定相鄰。
3.若經(jīng)常需要對(duì)線(xiàn)性表進(jìn)行插入和刪除操作,則最好采用(鏈?zhǔn)剑┐鎯?chǔ)結(jié)
構(gòu),若線(xiàn)性表的元素總數(shù)基本穩(wěn)定,且很少進(jìn)行插入和刪除操作,但要求
以最快的速度存取線(xiàn)性表中的元素,則最好采用(順序)存儲(chǔ)結(jié)構(gòu)。
4.在順序表中等概率下插入或刪除一個(gè)元素,需要平均移動(dòng)(n/2)元素,具體
移動(dòng)的元素個(gè)數(shù)與(插入或刪除位置)有關(guān)。
5.在帶頭結(jié)點(diǎn)的非空單鏈表中,頭結(jié)點(diǎn)的存儲(chǔ)位置由(head頭指針)指示,首
元素結(jié)點(diǎn)的存儲(chǔ)位置由(head.next)指示,除首元素結(jié)點(diǎn)外,其它任一元
素結(jié)點(diǎn)的存儲(chǔ)位置由(其直接前驅(qū))指示。
6.已知L是帶頭結(jié)點(diǎn)的單鏈表,且p結(jié)點(diǎn)既不是首元素結(jié)點(diǎn),也不是尾元素
結(jié)點(diǎn)。按要求從下列語(yǔ)句中選擇合適的語(yǔ)句序列。
a.在p結(jié)點(diǎn)后插入s結(jié)點(diǎn)的語(yǔ)句序列是:o
s.next=p.next;p.next=s;
b.在p結(jié)點(diǎn)前插入s結(jié)點(diǎn)的語(yǔ)句序列是:o
2
q=head;while(q.next!=p)q=q.next;s.next=p;q.next=s;
C.在表首插入S結(jié)點(diǎn)的語(yǔ)句序列是:0
s.next=head.next;head.next=s;
d.在表尾插入s結(jié)點(diǎn)的語(yǔ)句序列是:o
while(p.next!=null)p=p.next;s.next=null;p.next=s;
二.單項(xiàng)選擇題
1.線(xiàn)性表是(A)。
A.一個(gè)有限序列,可以為空B.一個(gè)有限序列,不能為空
C.一個(gè)無(wú)限序列,可以為空D.一個(gè)無(wú)限序列,不能為空
2.帶頭結(jié)點(diǎn)的單鏈表L為空的判定條件是(B)。
A.head==nullB.head,next==null
C.head.next==LD.head!=null
3.在表長(zhǎng)為n的單鏈表中,算法時(shí)間復(fù)雜度為0(n)的操作為(D)。
A.刪除p結(jié)點(diǎn)的直接后繼結(jié)點(diǎn)B.在p結(jié)點(diǎn)之后插入一個(gè)結(jié)點(diǎn)
C.刪除表中第一個(gè)結(jié)點(diǎn)D.查找單鏈表中第i個(gè)結(jié)點(diǎn)
4.在表長(zhǎng)為n的順序表中,算法時(shí)間復(fù)雜度為0(1)的操作為(C)。
A.在第i個(gè)元素前插入一個(gè)元素B.刪除第i個(gè)元素
C.在表尾插入一個(gè)元素D.查找其值與給定值相等的一個(gè)元素
5.設(shè)單鏈表中指針p指向結(jié)點(diǎn)ai,若要?jiǎng)h除ai之后的結(jié)點(diǎn),則需修改指針的
操作為(B)。
A.p=p.nextB.p.next=p.next.next
C.p=p.next.nextD.next=p
三.綜合題
1.試比較線(xiàn)性表的兩種存儲(chǔ)結(jié)構(gòu)各自的優(yōu)缺點(diǎn)。
順序存儲(chǔ):
優(yōu)點(diǎn):存儲(chǔ)密度大,存儲(chǔ)空間利用率高,可隨機(jī)存取。
缺點(diǎn):插入或刪除元素時(shí)不方便。
鏈?zhǔn)酱鎯?chǔ):
優(yōu)點(diǎn):插入或刪除元素時(shí)很方便,使用靈活。
結(jié)點(diǎn)空間可以動(dòng)態(tài)申請(qǐng)和釋放;
缺點(diǎn):存儲(chǔ)密度小,存儲(chǔ)空間利用率低,非隨機(jī)存取。
2.設(shè)線(xiàn)性表存于數(shù)組a[0..n-l]的前R個(gè)分量中,且遞增有序,試寫(xiě)一算法,
將x插入到線(xiàn)性表的適當(dāng)位置上,以保持線(xiàn)性表的有序性。
publicvoidsortOrder(Tx){
inti=0,j;
3
while(i<length)
if(((Comparable)x).compareTo(listArray[i])>=0)
i++;
else{
for(j=length-1;j>=i;j-)
listArray[j+1]=listArray[j];
listArray[i]=x;
length++;
break;
3.試分別以不同的存儲(chǔ)結(jié)構(gòu)實(shí)現(xiàn)線(xiàn)性表的就地逆置算法,即在原表的存儲(chǔ)空
間將線(xiàn)性表(al,a2,an)逆置為(an,an-1,al)o
就地逆置:(al,a2,...,an)逆置為(an,...,a2,al)
publicvoidinverse(){
inti=0,j;
Ttemp;
for(j=length-l;i<=j;i++,j-){
temp=listArrayfi];
listArray[i]=listArray[j];
listArray[j]=temp;
)
)
〃先將L的頭節(jié)點(diǎn)head的Next域置為NULL變成一個(gè)空鏈表,然后用p結(jié)點(diǎn)
采用頭插法插入到L中。
publicvoidinverse(){
if(head!=null||head.next!=null){
Node<T>p=head.next;
head.next=null;
Node<T>q=null;
while(p!=null){
q=p;
p二p.next;
q.next=head.next;
head.next=q;
4.試編寫(xiě)在帶頭結(jié)點(diǎn)的單鏈表中刪除一個(gè)最小值結(jié)點(diǎn)的算法。
publicvoiddelMin()
{
Node<T>p=head,q=head.next,p1=null,q1=null;
if(!isEmpty()){
Tmin=q.data;
while(q!=null){
if(((Comparable)min).compareTo(q.data)>0){
min=q.data;
pl=p;
ql=q;
4
p=q;
q=q.next;
)
pl.next=ql.next;
}
Length—;
)
5.設(shè)有一個(gè)雙鏈表,每個(gè)結(jié)點(diǎn)中除有prior、data和next三個(gè)域外,還有一個(gè)
訪問(wèn)頻度域freq,在鏈表被起用之前,其值均初始化為零。每當(dāng)對(duì)鏈表進(jìn)
行一次LocateNode(L,x)運(yùn)算,便令元素值為x的結(jié)點(diǎn)的freq域的值加1,
并調(diào)整表中結(jié)點(diǎn)的次序,使其按訪問(wèn)頻度的遞減序排列,以便使頻繁訪問(wèn)
的結(jié)點(diǎn)總是靠近表頭。試寫(xiě)一個(gè)符合上述要求的算法LocateNode(L,x)o
static<TextendsComparable>booleanLocateNode(dlinklistL,Tx){
DuNode<T>p=L.getHead().next;
〃指針p用于查找第一個(gè)data域等于x的結(jié)點(diǎn)
DuNode<T>q;
while(p!=null&&(p.data).equals(x)==false)
p=p.next;
if(p=null)//p為空,意味著沒(méi)有找到data域等于x的結(jié)點(diǎn)
returnfalse;
else{
p.freq++;//將找到的data域等于x的結(jié)點(diǎn)的訪問(wèn)頻度值加1
q=p.prior;
//指針q用于查找p的前面結(jié)點(diǎn)中第一個(gè)freq域不小于當(dāng)前p所指
結(jié)點(diǎn)的freq域的結(jié)點(diǎn)
while(q!=L.getHead()&&(q.freq).compareTo(p.freq)<0))
q=q.prior;
if(q!=p.prior){〃如果q發(fā)生了前移,才有必要移動(dòng)p
p.prior.next=p.next;
if(p.next!=null){
p.next.prior=p.prior;
〃如果p不是終端結(jié)點(diǎn),才有必要修改p的后繼結(jié)點(diǎn)的
prior域
p.prior=q;
p.next=q.next;
q.next=p;
p.next.prior=p;//將p插入到q的后邊
returntrue;
6.一個(gè)單循環(huán)鏈表F,每個(gè)結(jié)點(diǎn)包含三個(gè)域:pre>data和next,其中pre為
null,將其變?yōu)殡p循環(huán)鏈表的算法如下,請(qǐng)對(duì)算法中的空白處填空:
intdouble_list(DuLinkListF)
5
DuLNode*p,*q;
if(F.next==F)
{F.pre二F;return;}/*循環(huán)鏈表為空的情況*/
q=F;p=F.next;
while(p!=q)
{
p.pre=q;
q=_B____;
p=p.next;
}/*while*/
p.pre=q;
return0;
3.4習(xí)題
一.單項(xiàng)選擇題
1.一個(gè)棧的入棧序列a,b,c,d,e,則棧的不可能的輸出序列是_C_o
A.edcbaB.decbaC.dceabD.abcde
2.若棧采用順序存儲(chǔ)方式存儲(chǔ),現(xiàn)兩棧共享空間top[i]代表第i個(gè)棧
(i=l,2)棧頂,棧1的底在v[l],棧2的底在V[m],則棧滿(mǎn)的條件是
(B)o
A.top[2]-top[l]|=0B.top[l]+l=top[2]
C.top[l]+top[2]=mD.topfl]=top[2]
3.若已知一個(gè)棧的入棧序列是1,2,3,…,n,其輸出序列為pl,p2,
p3,...?pn,若pl=n,則pi為_(kāi)C_。
A.iB.n=iC.n-i+1D.不確定
4.棧結(jié)構(gòu)通常采用的兩種存儲(chǔ)結(jié)構(gòu)是_A_。
A.順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)B.散列方式和索引方式
C.鏈表存儲(chǔ)結(jié)構(gòu)和數(shù)組D.線(xiàn)性存儲(chǔ)結(jié)構(gòu)和非線(xiàn)性存儲(chǔ)結(jié)構(gòu)
5.判定一個(gè)棧ST(最多元素為m0)為空的條件是_B_。
A.ST.top!=-1B.ST.top==-1
C.ST.top!=mO-1D.ST.top==mO-1
6.判定一個(gè)棧ST(最多元素為mO)為棧滿(mǎn)的條件是_D_。
A.ST.top!=-1B.ST.top==-1
C.ST.top!=mO-1D.ST.top==mO-1
7.棧的特點(diǎn)是_B—,隊(duì)列的特點(diǎn)是_A_o
A.先進(jìn)先出B.先進(jìn)后出
8.一個(gè)隊(duì)列的入列序列是1,2,3,4,則隊(duì)列的輸出序列是_B_。
A.4,3,2,1B.1,2,3,4
6
C.1,4,3,2D.3,2,4,1
9.判定一個(gè)循環(huán)隊(duì)列QU(最多元素為mO)為空的條件是_A_o
A.front==rearB.front!=rear
C.front==(rear+1)%m0D.front!=(rear+1)%m0
10.判定一個(gè)循環(huán)隊(duì)列QU(最多元素為mO)為滿(mǎn)隊(duì)列的條件是_C_o
A.front==rearB.front!=rear
C.front==(rear+1)%m0D.front!=(rear+1)%m0
11.循環(huán)隊(duì)列用數(shù)組A[0,m-1]存放其元素值,已知其頭尾指針?lè)謩e是front和
rear,則當(dāng)前隊(duì)列中的元素個(gè)數(shù)是_A_。
A.(rear-front+m)%mB.rear-front+1
C.rear-front-1D.rear-front
12.棧和隊(duì)列的共同點(diǎn)是_C_o
A.都是先進(jìn)后出B.都是先進(jìn)先出
C.只允許在端點(diǎn)處插入和刪除元素D.沒(méi)有共同點(diǎn)
13.向一個(gè)棧頂指針為HS的鏈棧中插入一個(gè)s所指結(jié)點(diǎn)時(shí),則執(zhí)行_C_。(不帶
空的頭結(jié)點(diǎn))
A.HS.next=s;B.s.next=HS.next;HS.next=s;
C.s.next=HS;HS=s;D.s.next=HS;HS=HS.next;
14.從一個(gè)棧頂指針為HS的鏈棧中刪除一個(gè)結(jié)點(diǎn)時(shí),用x保存被刪結(jié)點(diǎn)的值,
則執(zhí)行_D_。(不帶空的頭結(jié)點(diǎn))
A.x=HS;HS=HS.next;B.x=HS.data;
C.HS=HS.next;x=HS.data;D.x=HS.data;HS=HS.next;
二.填空題
1.向棧中壓入元素的操作是(先移動(dòng)棧頂指針,后存入元素)。
2.對(duì)棧進(jìn)行退棧時(shí)的操作是(先取出數(shù)據(jù)元素,后移動(dòng)棧頂指針)。
3.在一個(gè)循環(huán)隊(duì)列中,隊(duì)首指針指向隊(duì)首元素的(前一個(gè)位置)。
4.從循環(huán)隊(duì)列中刪除一個(gè)元素時(shí),其操作是(先移動(dòng)隊(duì)首指針,后取出元
素)。
5.在具有n個(gè)單元的循環(huán)隊(duì)列中,隊(duì)滿(mǎn)時(shí)共有(n-1)個(gè)元素。
6.一個(gè)棧的輸入序列是12345,則棧的輸出序列43512是(不可能的)。
7.一個(gè)棧的輸入序列是12345,則棧的輸出序列12345是(可能的)。
8.在棧頂指針為HS的鏈棧中,判定??盏臈l件是(HS==null)。
三.算法設(shè)計(jì)題:
1.設(shè)順序表va中的數(shù)據(jù)元數(shù)遞增有序。試寫(xiě)一算法,將x插入到順序表的適
當(dāng)位置上,以保持該表的有序性。
2.試寫(xiě)一算法,實(shí)現(xiàn)順序表的就地逆置,即利用原表的存儲(chǔ)空間將線(xiàn)性表
(al,a2,….an)逆置為(an,al)。
7
3.試編寫(xiě)一個(gè)遍歷及顯示隊(duì)列中元素的算法。
publicvoidnextOrder()
inti,j=front;
for(i=1;i<=size();i++)
j=(j+1)%queueArray.length;
System.out.println(queueArray[j]);
4.設(shè)一循環(huán)隊(duì)列Queue,只有頭指針front,不設(shè)尾指針,另設(shè)一個(gè)內(nèi)含元素
個(gè)數(shù)的計(jì)數(shù)器,試寫(xiě)出相應(yīng)的進(jìn)隊(duì)、出隊(duì)算法。
publicvoidEnQueue(Tobj)
if(count=queueArray.length-l){〃隊(duì)滿(mǎn)
T[]p=(T[])newObject[queueArray.length*2];
inti=front+1,j=l,m=1;
while(m<count){
p[j]=queueArray[i];
i=(i+l)%queueArray.length;
j++;m++;
)
queueArray=p;
front=0;
}
count++;
queueArray[(front+count)%queueArray.length]=obj;
)
publicTDeQueue()
(
if(count==0){
System.out.println("隊(duì)列已空,無(wú)法出隊(duì)!”);
returnnull;
)
front=(front+1)%queueArray.length;
count-;
returnqueueArray[front];
5.設(shè)計(jì)一算法能判斷一個(gè)算術(shù)表達(dá)式中的圓括號(hào)配對(duì)是否正確。(提示:對(duì)
表達(dá)式進(jìn)行掃描,凡遇到“(”就進(jìn)棧,遇到“)”就退出棧頂?shù)摹埃ā?,表達(dá)式
掃描完畢時(shí)棧若為空則圓括號(hào)配對(duì)正確。)
publicstaticbooleanmatching(char[]exp)
intstate=l,i=0;
sequenceStack<Character>s=newsequenceStack<Character>();
/*盅義一個(gè)順序棧*/
while(i<exp.length&&state==l){
switch(exp[i]){
8
case
{
s.push(exp[i]);
i++;
break;
)
case
(
if(!s.isEmpty()){
if(s.getHead()=='('){
s.pop();
i++;
elsestate=O;
)
elsestate=O;
break;
}
default:{i++;break;}
if(s.isEmpty()&&state==1)
returntrue;
elsereturnfalse;
4.7習(xí)題
單項(xiàng)選擇題
1.空串與空格串是相同的,這種說(shuō)法B。
A.正確B.不正確
2.串是一中特殊的線(xiàn)性表,其特殊性體現(xiàn)在一旦_。
A.可以順序存儲(chǔ)B.數(shù)據(jù)元素是一個(gè)字符
C.可以鏈接存儲(chǔ)D.數(shù)據(jù)元素可以是多個(gè)字符
3.設(shè)有兩個(gè)串p和q,求q在p中首次出現(xiàn)的位置的運(yùn)算稱(chēng)作g。
A.連接B.模式匹配C.求子串D.求串長(zhǎng)
4.設(shè)串sl='ABCDEFGLs2=,PQRST,,函數(shù)con(x,y)返回x和y串的連接
串,subs(s,i,j)返回串s的從序號(hào)i的字符開(kāi)始的j個(gè)字符組成的子串,len(s)
返回串s的長(zhǎng)度,則con(subs(sl,2,len(s2)),subs(sl,len(s2),2))的結(jié)果串是
D0
A.BCDEFB.BCDEFGC.BCPQRSTD.BCDEFEF
5.常對(duì)數(shù)組進(jìn)行的兩種基本操作是C。
A.建立與刪除B.索引和修改C.查找和修改D.查找與索引
9
6.二維數(shù)組M的成員是6個(gè)字符(每個(gè)字符占一個(gè)存儲(chǔ)單元,即一個(gè)字節(jié))
組成的串,行下標(biāo)i的范圍從0到8,列下標(biāo)j的范圍從1到10,則存放M
至少需要D個(gè)字節(jié):M的第8列和第5行共占A個(gè)字節(jié)。
①A.90B.180C.240D.540
②A.108B.114C.54D.60
二.填空題(將正確的答案填在相應(yīng)的空中)
1.串的兩種最基本的存儲(chǔ)方式是順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ)。
2.兩個(gè)串相等的充分必要條件是長(zhǎng)度相等且對(duì)應(yīng)位置字符相等。
3.空串是。個(gè)字符的串,其長(zhǎng)度等于空格串是由一個(gè)或多個(gè)空格字符
組成的串,其長(zhǎng)度等于空格字符個(gè)數(shù)。
4.設(shè)sTHAMoAoTEACHER'淇長(zhǎng)度是14。(□表示空格)
三.算法設(shè)計(jì)題:
1.編寫(xiě)算法,實(shí)現(xiàn)remove(stringt)操作,即從當(dāng)前串中刪除所有和串t相同的
子串。
publicintremove(stringt){
〃在當(dāng)前串中刪除所有與串t相等的子串,并返回刪除的次數(shù)
inttime=0,m;
for(intj=O;j<this.length-t.length+l;j++){
if(this.chars[j]==t.chars[O]){
intx=0;
for(inti=O;i<t.length;i++){
if(this.chars[j+i]==t.chars[i]){
x++;
}
else
break;
)
if(x==t.length){
m=j;
for(inti=j+t.length;i<this.length;i++){
this.chars[m]=this.chars[i];
m++;
}
time++;
this.length-=t.getLength();
returntime;
)
2.編寫(xiě)算法,實(shí)現(xiàn)replace(stringt,stringv)操作,即從當(dāng)前串中用串v替換所
有與串t相等的子串,并返回替換的次數(shù)串的。
publicintreplace(stringt,stringv){
〃在當(dāng)前串中用串v替換所有與串t相等的子串,并返回替換的次數(shù)
intpoor=v.getLength()-t.getLength();
10
intl=O,num=O,m=O,n=O,size=maxSize;
if(maxSize<maxSize+num*poor)
size=maxSize+num*poor;
stringtl=newstring(size);
intcycle=O;
for(inti=O;i<this.length-t.length+1;i++){
if(this.chars[i]==t.chars[0]){
intx=0;
for(intj=0;j<t.length;j++){
if(this.chars[j+i]==t.chars[j])
x++;
else
break;
)
if(x=t.length){
num++;
n=i;
for(l=m;l<n;l++)
tl.chars[tl.length++]=this.chars[l];
for(intj=0;j<v.length;j++)
11.chars[t1.length++]=v.chars[j];
m=i+t.length;
i+=t.length-1;
this.chars=tl.chars;
this.length=tl.length;
returnnum;
}
3.設(shè)A=((a,b),(c,d)),求下列操作結(jié)果:
Tail(Head(A))=?(b)
Tail(Head(Tail(A)))=?(d)
5.7習(xí)題
一.單項(xiàng)選擇題
1.在一棵度為3的樹(shù)中,度為3的結(jié)點(diǎn)數(shù)為2個(gè),度為2的結(jié)點(diǎn)數(shù)為1個(gè),度為1的結(jié)點(diǎn)
數(shù)為2個(gè),則度為0的結(jié)點(diǎn)數(shù)為(C)個(gè)。
A.4B.5C.6D.7
2.假設(shè)在一棵二叉樹(shù)中,雙分支結(jié)點(diǎn)數(shù)為15,單分支結(jié)點(diǎn)數(shù)為30個(gè),則葉子結(jié)點(diǎn)數(shù)為
(B)個(gè)。
A.15B.16C.17D.47
3.假定一棵三叉樹(shù)的結(jié)點(diǎn)數(shù)為50,則它的最小高度為(C)。
A.3B.4C.5D.6
4.在一棵二叉樹(shù)上第4層的結(jié)點(diǎn)數(shù)最多為(D)。
A.2B.4C.6D.8
11
5.用順序存儲(chǔ)的方法將完全二叉樹(shù)中的所有結(jié)點(diǎn)逐層存放在數(shù)組中R[l..n],結(jié)點(diǎn)R[i]若
有左孩子,其左孩子的編號(hào)為結(jié)點(diǎn)(B)。
A.R[2i+1]B.R[2i]C.R[i/2]D.R[2i-1]
6.由權(quán)值分別為3,8,6,2,5的葉子結(jié)點(diǎn)生成一棵哈夫曼樹(shù),它的帶權(quán)路徑長(zhǎng)度為
(D)?
A.24B.48C.72D.53
7.線(xiàn)索二叉樹(shù)是一種(A)結(jié)構(gòu)。
A.邏輯B.邏輯和存儲(chǔ)C.物理D.線(xiàn)性
8.線(xiàn)索二叉樹(shù)中,結(jié)點(diǎn)p沒(méi)有左子樹(shù)的充要條件是(B)。
A.p.lChild=nullB.p.ltag=l
C.p.ltag=l且p.IChild=nullD.以上都不對(duì)
9.設(shè)n,m為一棵二叉樹(shù)上的兩個(gè)結(jié)點(diǎn),在中序遍歷序列中n在m前的條件是(B)。
A.n在m右方B.n在m左方
C.n是m的祖先D.n是m的子孫
10.如果F是由有序樹(shù)T轉(zhuǎn)換而來(lái)的二叉樹(shù),那么T中結(jié)點(diǎn)的前序就是F中結(jié)點(diǎn)的
(B)?
A.中序B.前序C.后序D.層次序
11.欲實(shí)現(xiàn)任意二叉樹(shù)的后序遍歷的非遞歸算法而不必使用棧,最佳方案是二叉樹(shù)采用
(A)存儲(chǔ)結(jié)構(gòu)。
A.三叉鏈表B.廣義表C.二叉鏈表D.順序
12.下面敘述正確的是(D)。
A.二叉樹(shù)是特殊的樹(shù)B.二叉樹(shù)等價(jià)于度為2的樹(shù)
C.完全二叉樹(shù)必為滿(mǎn)二叉樹(shù)D.二叉樹(shù)的左右子樹(shù)有次序之分
13.任何一棵二叉樹(shù)的葉子結(jié)點(diǎn)在先序、中序和后序遍歷序列中的相對(duì)次序(A)。
A.不發(fā)生改變B.發(fā)生改變
C.不能確定D.以上都不對(duì)
14.已知一棵完全二叉樹(shù)的結(jié)點(diǎn)總數(shù)為9個(gè),則最后一層的結(jié)點(diǎn)數(shù)為(B)。
A.1B.2C.3D.4
15.根據(jù)先序序列ABDC和中序序列DBAC確定對(duì)應(yīng)的二叉樹(shù),該二叉樹(shù)(A)?
A.是完全二叉樹(shù)B.不是完全二叉樹(shù)
C.是滿(mǎn)二叉樹(shù)D.不是滿(mǎn)二叉樹(shù)
二.判斷題
(X)1.二叉樹(shù)中每個(gè)結(jié)點(diǎn)的度不能超過(guò)2,所以二叉樹(shù)是一種特殊的樹(shù)。
(V)2.二叉樹(shù)的前序遍歷中,任意結(jié)點(diǎn)均處在其子女結(jié)點(diǎn)之前。
(V)3.線(xiàn)索二叉樹(shù)是一種邏輯結(jié)構(gòu)。
(J)4.哈夫曼樹(shù)的總結(jié)點(diǎn)個(gè)數(shù)(多于1時(shí))不能為偶數(shù)。
(X)5.由二叉樹(shù)的先序序列和后序序列可以唯一確定一顆二叉樹(shù)。
(X)6.樹(shù)的后序遍歷與其對(duì)應(yīng)的二叉樹(shù)的后序遍歷序列相同。)
(X)7.根據(jù)任意一種遍歷序列即可唯一確定對(duì)應(yīng)的二叉樹(shù)。
(J)8.滿(mǎn)二叉樹(shù)也是完全二叉樹(shù)。
(X)9.哈夫曼樹(shù)一定是完全二叉樹(shù)。
(X)10.樹(shù)的子樹(shù)是無(wú)序的。
三.填空題
1.假定一棵樹(shù)的廣義表表示為A(B(E),C(F(H,I,J),G),D),則該樹(shù)的度為
3,樹(shù)的深度為/終端結(jié)點(diǎn)的個(gè)數(shù)為單分支結(jié)點(diǎn)的個(gè)數(shù)為」雙分支結(jié)點(diǎn)的
個(gè)數(shù)為1,三分支結(jié)點(diǎn)的個(gè)數(shù)為2,C結(jié)點(diǎn)的雙親結(jié)點(diǎn)為其孩子結(jié)點(diǎn)為
F和G結(jié)點(diǎn)。
2.設(shè)F是一個(gè)森林,B是由F轉(zhuǎn)換得到的二叉樹(shù),F(xiàn)中有n個(gè)非終端結(jié)點(diǎn),則B中右指針
域?yàn)榭盏慕Y(jié)點(diǎn)有n+1個(gè)。
12
3.對(duì)于一個(gè)有n個(gè)結(jié)點(diǎn)的二叉樹(shù),當(dāng)它為一棵定全二叉樹(shù)時(shí)具有最小高度,即為
llogznl+1,當(dāng)它為一棵單支樹(shù)具有最大高度,即為工。
4.由帶權(quán)為3,9,6,2,5的5個(gè)葉子結(jié)點(diǎn)構(gòu)成一棵哈夫曼樹(shù),則帶權(quán)路徑長(zhǎng)度為國(guó)。
5.在一棵二叉排序樹(shù)上按中序遍歷得到的結(jié)點(diǎn)序列是一個(gè)有序序列。
6.對(duì)于一棵具有n個(gè)結(jié)點(diǎn)的二叉樹(shù),當(dāng)進(jìn)行鏈接存儲(chǔ)時(shí),其二叉鏈表中的指針域的總數(shù)
為2n個(gè),其中n-1個(gè)用于鏈接孩子結(jié)點(diǎn),n+1個(gè)空閑著。
7.在一棵二叉樹(shù)中,度為0的結(jié)點(diǎn)個(gè)數(shù)為nO,度為2的結(jié)點(diǎn)個(gè)數(shù)為n2,則n0=丁+1。
8.一棵深度為k的滿(mǎn)二叉樹(shù)的結(jié)點(diǎn)總數(shù)為立1,一棵深度為k的完全二叉樹(shù)的結(jié)點(diǎn)總數(shù)
的最小值為絲,最大值為四1。
9.由三個(gè)結(jié)點(diǎn)構(gòu)成的二叉樹(shù),共有工種不同的形態(tài)。
10.設(shè)高度為h的二叉樹(shù)中只有度為0和度為2的結(jié)點(diǎn),則此類(lèi)二叉樹(shù)中所包含的結(jié)點(diǎn)數(shù)
至少為2h-l?
11.一棵含有n個(gè)結(jié)點(diǎn)的k叉樹(shù),單支樹(shù)形態(tài)達(dá)到最大深度,完全二叉樹(shù)形態(tài)達(dá)到最
小深度。
12.對(duì)于一棵具有n個(gè)結(jié)點(diǎn)的二叉樹(shù),若一個(gè)結(jié)點(diǎn)的編號(hào)為i(l<iWn),則它的左孩子結(jié)
點(diǎn)的編號(hào)為2i,右孩子結(jié)點(diǎn)的編號(hào)為2i+l,雙親結(jié)點(diǎn)的編號(hào)為|i/2|。
13.對(duì)于一棵具有n個(gè)結(jié)點(diǎn)的二叉樹(shù),采用二叉鏈表存儲(chǔ)時(shí),鏈表中指針域的總數(shù)為理
個(gè),其中nT個(gè)用于鏈接孩子結(jié)點(diǎn),n+1個(gè)空閑著。
14.哈夫曼樹(shù)是指帶權(quán)路徑長(zhǎng)度最小的二叉樹(shù)。
15.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 黑龍江省哈爾濱師范大學(xué)附中2025年高三壓軸卷化學(xué)試卷含解析
- 醫(yī)學(xué)資料 2021年手外傷的護(hù)理與康復(fù)演示學(xué)習(xí)課件
- 護(hù)理質(zhì)量敏感指標(biāo)
- 安徽省蕪湖縣一中2025屆高三最后一卷化學(xué)試卷含解析
- 湖南省岳陽(yáng)市2025屆高三下學(xué)期一??荚嚮瘜W(xué)試題含解析
- 護(hù)理質(zhì)量管理情況
- 云南省上海新紀(jì)元2024-2025學(xué)年高二下學(xué)期3月月考地理試題(含答案)
- 人教版四年級(jí)下冊(cè)數(shù)學(xué)期末測(cè)試滿(mǎn)分沖刺卷(含答案)
- 2025年UV激光打孔機(jī)項(xiàng)目合作計(jì)劃書(shū)
- 2025屆山東省決勝新高考化學(xué)五模試卷含解析
- 灌籃高手臺(tái)詞001話(huà)中日雙語(yǔ)
- 關(guān)于印發(fā)《臨床輸血技術(shù)規(guī)范》的通知
- 第5章 智能網(wǎng)聯(lián)汽車(chē)運(yùn)動(dòng)控制技術(shù)
- 外貿(mào)業(yè)務(wù)員面試試卷
- 四年級(jí)下冊(cè)勞動(dòng)教育全冊(cè)教案設(shè)計(jì)
- 電梯鋼結(jié)構(gòu)井道技術(shù)方案-
- 一般公共預(yù)算支出編制流程圖
- 四川大學(xué)-劉龍飛-畢業(yè)答辯PPT模板
- 麗聲北極星分級(jí)繪本第一級(jí)下The King's Yu Player教學(xué)設(shè)計(jì)
- 顯微操作技術(shù)(全面)
- 兩立體相交相貫
評(píng)論
0/150
提交評(píng)論