版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1.6習(xí)題1.6.1知識點:數(shù)據(jù)結(jié)構(gòu)的定義一、選擇題1①數(shù)據(jù)結(jié)構(gòu)通常是研究數(shù)據(jù)的(A)及它們之間的互相聯(lián)系。A.存儲和邏輯結(jié)構(gòu)B.存儲結(jié)構(gòu)C.順序結(jié)構(gòu)D.鏈?zhǔn)酱鎯Y(jié)構(gòu)2①數(shù)據(jù)在計算機存儲器內(nèi)表達時,物理地址與邏輯地址相同并且是連續(xù)的,稱之為(C)A.存儲結(jié)構(gòu)B.邏輯結(jié)構(gòu)C.順序存儲結(jié)構(gòu)D.鏈?zhǔn)酱鎯Y(jié)構(gòu)3①線性結(jié)構(gòu)是數(shù)據(jù)元素之間存在一種(D)。A.一對多關(guān)系B.多對多關(guān)系C多對一關(guān)系D一對一關(guān)系4①計算機內(nèi)部數(shù)據(jù)解決的基本單位是(B)。A.數(shù)據(jù)B.數(shù)據(jù)元素C.數(shù)據(jù)項D.數(shù)據(jù)庫5②從邏輯上可以把數(shù)據(jù)結(jié)構(gòu)分為(C)兩大類?!疚錆h交通科技1996】A.動態(tài)結(jié)構(gòu)、靜態(tài)結(jié)構(gòu)B.順序結(jié)構(gòu)、鏈?zhǔn)浇Y(jié)構(gòu)C.線性結(jié)構(gòu)、非線性結(jié)構(gòu)D.初等結(jié)構(gòu)、構(gòu)造型結(jié)構(gòu)二、填空題1①數(shù)據(jù)結(jié)構(gòu)按邏輯結(jié)構(gòu)可分為四大類,它們分別是集合、線性、樹、圖。2①數(shù)據(jù)的存儲結(jié)構(gòu)可用四種基本的存儲方法表達,它們分別是順序、鏈?zhǔn)?、散列、索引。判斷題(F)1①數(shù)據(jù)元素是數(shù)據(jù)的最小單位。(T)2①記錄是數(shù)據(jù)解決的最小單位。(F)3①數(shù)據(jù)的邏輯結(jié)構(gòu)是指數(shù)據(jù)的各數(shù)據(jù)項之間的邏輯關(guān)系。(T)4①數(shù)據(jù)的物理結(jié)構(gòu)是指數(shù)據(jù)在計算機內(nèi)的實際存儲形式。簡答題1①簡述什么是數(shù)據(jù)結(jié)構(gòu)?2②數(shù)據(jù)結(jié)構(gòu)與數(shù)據(jù)類型有什么區(qū)別?【哈爾濱工業(yè)2023】1.6.2知識點:算法的概念一、選擇題1①計算機算法指的是(C)A.計算方法 ?B.排序方法 ?C.解決問題的有限運算序列 D.調(diào)度方法2①算法分析的目的是((1)C),算法分析的兩個重要方面((2)A).A.找出數(shù)據(jù)結(jié)構(gòu)的合理性??B.研究算法中的輸入與輸出的關(guān)系C.分析算法的效率以求改善 D.分析算法的易查性和文檔性A.空間復(fù)雜度和時間復(fù)雜度?B.對的性和簡明性C.可讀性和文檔性???D.數(shù)據(jù)復(fù)雜性和程序復(fù)雜性3②設(shè)語句X++的時間是單位時間,則語句:for(i=1;i<=n;i++)x++;時間復(fù)雜度為(C)。A.O(1)B.O(n)C.O(n2)D.O(n3)4②算法的計算量的大小稱為計算的(B)?!颈本┼]電2023】A.效率B.復(fù)雜性C.現(xiàn)實性D.難度5②算法的時間復(fù)雜度取決于(C)【中科院計算所1998】A.問題的規(guī)模B.待解決數(shù)據(jù)的初態(tài)C.A和B6②下面關(guān)于算法說法錯誤的是(A)【南京理工2023】A.算法最終必須由計算機程序?qū)崿F(xiàn)B.為解決某問題的算法同為該問題編寫的程序含義是相同的C.算法的可行性是指指令不能有二義性D.以上幾個都是錯誤的7②下面說法錯誤的是(D)【南京理工2023】算法原地工作的含義是指不需要任何額外的輔助空間在相同的規(guī)模n下,復(fù)雜度O(n)的算法在時間上總是優(yōu)于復(fù)雜度O(2n)的算法所謂時間復(fù)雜度是指最壞情況下,估算算法執(zhí)行時間的一個上界同一個算法,實現(xiàn)語言的級別越高,執(zhí)行效率就越低A.(1)B.(1),(2)C.(1),(4)D.(3)8②程序段for(i=n-1;i>=1;i++)for(j=1;j<=i;j++)if(A[j]>A[j+1])A[j]與A[j+1]對換;其中n為正整數(shù),則最后一行的語句頻度在最壞情況下是(D)【南京理工1998】A.O(n)B.O(nlog2n)C.O(n3)D.O(n2)二、填空題1①以夾雜自然語言和程序語句的形式來描述解決問題的方法稱為____偽碼________。2①一個算法的效率可分為___時間______效率和__空間_______效率.3②有一個程序片斷如下:for(i=0;i<n;i++)x=x+1;則其時間復(fù)雜度為:_O(n)________4②有一個程序片斷如下:for(i=0;i<n;i++)for ?(j=i;j<n;j++)for(k=j;k<n;k++)m=1;則其時間復(fù)雜度為:O(n3)5②有一個程序片斷如下:for(i=0;i<n;i++){j=i;while(j>=2)j=j/2;}則其時間復(fù)雜度為:O(nlog2n)判斷題(T)1①算法的優(yōu)劣與算法描述語言無關(guān),但與所用計算機有關(guān)。(T)2①健壯的算法不會因非法的輸入數(shù)據(jù)而出現(xiàn)莫名其妙的狀態(tài)。(F)3①程序一定是算法。簡答題1①如何判斷一個算法的好壞?2③調(diào)用下列C函數(shù)f(n)回答下列問題:(1)試指出f(n)值的大小,并寫出f(n)值的推導(dǎo)過程;(2)假定n=5,試指出f(5)值的大小和執(zhí)行f(5)時的輸出結(jié)果。C函數(shù):intf(intn){inti,j,k,sum=0;for(i=l;i<n+1;i++){for(j=n;j>i-1;j--)for(k=1;k<j+1;k++)sum++;printf("sum=%d\n",sum);}return(sum);}【華中理工2023】2.7習(xí)題2.7.1知識點:線性表的邏輯結(jié)構(gòu)一、選擇題1①線性表L=(a1,a2,…,an),下列說法對的的是(D)。A.每個元素都有一個直接前驅(qū)和一個直接后繼。B.線性表中至少要有一個元素。C.表中諸元素的排列順序必須是由小到大或由大到小。D.除第一個和最后一個元素外,其余每個元素都有一個且僅有一個直接前驅(qū)和直接后繼。2①在線性表的下列運算中,不改變數(shù)據(jù)元素之間結(jié)構(gòu)關(guān)系的運算是(D)。A.插入B.刪除 ?C.排序D.定位3①線性表是具有n個(C)的有限序列(n>0)?!厩迦A1998】A.表元素B.字符C.數(shù)據(jù)元素D.?dāng)?shù)據(jù)項E.信息項二、判斷題(T)1①線性表中的每個結(jié)點最多只有一個前驅(qū)和一個后繼。(F)2①線性表中的每個結(jié)點都至少有一個前驅(qū)結(jié)點和后繼結(jié)點。(F)3①線性表是N個數(shù)的有限序列。(F)4①同一線性表的數(shù)據(jù)元素可以具有不同的特性。(T)5①線性表的長度n就是表中數(shù)據(jù)元素的個數(shù),當(dāng)n=0時,稱為空表。(T)6①線性表是一個相稱靈活的數(shù)據(jù)結(jié)構(gòu),它的長度可根據(jù)需要增長或縮短。(F)7①對線性表中的數(shù)據(jù)元素只能進行訪問,不能進行插入和刪除操作。2.7.2知識點:線性表的順序存儲結(jié)構(gòu)一、選擇題1①在一個長度為n的順序表中,在第i個元素(1<=i<=n+1)之前插入一個新元素時需向后移動(B)個元素. A.n-1?B.n-i+1?C.n-i-1 D.i2①若某線性表中最常用的操作是取第i個元素和找第i個元素的前趨元素,則采用(D)存儲方式最節(jié)省時間。A.單鏈表B.雙鏈表C.單向循環(huán)D.順序表3②一個數(shù)組第一個元素的存儲地址是100,每個元素的長度為2,則第5個元素的地址是(B)A.110B.108C.100D.1204①下述哪一條是順序存儲結(jié)構(gòu)的優(yōu)點(A)?!颈狈浇煌ǎ?23】A.存儲密度大B.插入運算方便C.刪除運算方便D.可方便地用于各種邏輯結(jié)構(gòu)的存儲表達5③若長度為n的線性表采用順序存儲結(jié)構(gòu),在其第i個位置插入一個新元素的算法的時間復(fù)雜度為(C) ?(1<=i<=n+1)?!颈本┖娇蘸教?999】A.O(0)B.O(1)C.O(n)D.O(n2)6③對于順序存儲的線性表,訪問結(jié)點和增長、刪除結(jié)點的時間復(fù)雜度為(C)?!厩鄭u2023】A.O(n)O(n)B.O(n)O(1)C.O(1)O(n)D.O(1)O(1)填空題1①線性表的順序存儲的缺陷是在任意位置上___插入_____數(shù)據(jù)與____刪除_____數(shù)據(jù)費時間。2①設(shè)一線性表的順序存儲,總存儲容量為M,其元素存儲位置的范圍為__0~M-1__________。3①向一個長度為n的向量中刪除第i個元素(1≤i≤n)時,需向前移動____n-i______個元素。簡答題1③已知線性表的存儲結(jié)構(gòu)為順序表,閱讀下列算法,并回答問題:voidf30(SeqList*L){inti,j;for(i=j=0;i<L->length;i++)if(L->data[i]>=0){if(i!=j)L->data[j]=L->data[i];j++;}L->length=j;}設(shè)線性表L=(21,-7,-8,19,0,-11,34,30,-10),寫出執(zhí)行f30(&L)后L狀態(tài);(21,19,0,34,30)簡述算法f30的功能。刪除順序表中小于0的元素四、編程題1④已知順序表La中數(shù)據(jù)元素按非遞減有序排列。試寫一個算法,將x插入到La的合適位置上,保持該表的有序性。2.7.3知識點:線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)一、選擇題1①鏈表是一種采用(B)存儲結(jié)構(gòu)存儲的線性表。A.順序B.鏈?zhǔn)紺.星式D.網(wǎng)狀2①鏈接存儲的存儲結(jié)構(gòu)所占存儲空間(A)。A.分兩部分,一部分存放結(jié)點值,另一部分存放表達結(jié)點間關(guān)系的指針。B.只有一部分,存放結(jié)點值。C.只有一部分,存儲表達結(jié)點間關(guān)系的指針。D.分兩部分,一部分存放結(jié)點值,另一部分存放結(jié)點所占單元數(shù)。3①線性表若采用鏈?zhǔn)酱鎯Y(jié)構(gòu)時,規(guī)定內(nèi)存中可用存儲單元的地址(D)。A.必須是連續(xù)的B.部分地址必須是連續(xù)的C.一定是不連續(xù)的D.連續(xù)或不連續(xù)都可以4①線性表L在(B)情況下合用于使用鏈?zhǔn)浇Y(jié)構(gòu)實現(xiàn)。A.需經(jīng)常修改L中的結(jié)點值B.需不斷對L進行刪除插入C.L中具有大量的結(jié)點D.L中結(jié)點結(jié)構(gòu)復(fù)雜5①對單鏈表表達法,以下說法錯誤的是(C)。A.?dāng)?shù)據(jù)域用于存儲線性表的一個數(shù)據(jù)元素。B.指針域(或鏈域)用于存放一個指向本結(jié)點所含數(shù)據(jù)元素的直接后繼所在結(jié)點的指針。C.所有數(shù)據(jù)通過指針的鏈接而組織成單鏈表。D.NULL稱為空指針,它不指向任何結(jié)點只起標(biāo)志作用。6①以下說法對的的是(D)。A.順序存儲方式的優(yōu)點是存儲密度大且插入、刪除運算效率高B.鏈表的每個結(jié)點中都恰好包含一個指針C.線性表的順序存儲結(jié)構(gòu)優(yōu)于鏈?zhǔn)酱鎯Y(jié)構(gòu)D.順序存儲結(jié)構(gòu)屬于靜態(tài)結(jié)構(gòu)而鏈?zhǔn)浇Y(jié)構(gòu)屬于動態(tài)結(jié)構(gòu)7①以下說法錯誤的是(D)。A.求表長、定位這兩種運算在采用順序存儲結(jié)構(gòu)時實現(xiàn)的效率不比采用鏈?zhǔn)酱鎯Y(jié)構(gòu)時實現(xiàn)的效率低B.順序存儲的線性表可以隨機存?。?由于順序存儲規(guī)定連續(xù)的存儲區(qū)域,所以在存儲管理上不夠靈活D.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)優(yōu)于順序存儲結(jié)構(gòu)8①不帶頭結(jié)點的單鏈表head為空的鑒定條件是(A)。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL9①帶頭結(jié)點的單鏈表head為空的鑒定條件是(B)。A.head==NULLB.head->next==NULLC.head->next==headD.head!=NULL10②在頭指針為head的非空單循環(huán)鏈表中,指針p指向尾結(jié)點,下列關(guān)系成立的是(A)。A.p->next==headB.p->next->next==headC.p->next==NULLD.p==head11②在一個單鏈表中,已知q所指結(jié)點是p所指結(jié)點的前驅(qū)結(jié)點,若在q和p之間插入s結(jié)點,則執(zhí)行語句(C)。A.s->next=p->next;p->next=s;B.p->next=s->next;s->next=p;C.q->next=s;s->next=p;D.p->next=s;s->next=q;12②在一個單鏈表中,若p所指結(jié)點不是最后結(jié)點,在p之后插入s結(jié)點,則應(yīng)執(zhí)行語句(B)。A.s->next=p:p->next=s;B.s->next=p->next;p->next=s;C.s->next=p->next;p=s;D.p->next=s;s->next=p;13②在一個單鏈表中,若刪除p所指結(jié)點的后續(xù)結(jié)點,則應(yīng)執(zhí)行語句(A)。A.p->next=p->next->next;B.p=p->next;p->next=p->next->next;C.p->next=p->next;D.p=p->next->next;14②指針p、q和r依次指向某循環(huán)鏈表中三個相鄰的結(jié)點,互換結(jié)點*q和結(jié)點*r在表中順序的程序段是(A)。A.p->next=r;q->next=r->next;r->next=q;B.p->next=r;r->next=q;q->next=r->next;C.r->next=q;q->next=r->next;p->next=r;D.r->next=q;p->next=r;q->next=r->next;15①鏈表不具有的特點是(B)【福州1998】A.插入、刪除不需要移動元素B.可隨機訪問任一元素C.不必事先估計存儲空間? D.所需空間與線性長度成正比16①下面的敘述不對的的是(BC)【南京理工1996】A.線性表在鏈?zhǔn)酱鎯r,查找第i個元素的時間同i的值成正比B.線性表在鏈?zhǔn)酱鎯r,查找第i個元素的時間同i的值無關(guān)C.線性表在順序存儲時,查找第i個元素的時間同i的值成正比D.線性表在順序存儲時,查找第i個元素的時間同i的值無關(guān)17①下面關(guān)于線性表的敘述中,錯誤的是哪一個?(B)【北方交通2023】A.線性表采用順序存儲,必須占用一片連續(xù)的存儲單元。B.線性表采用順序存儲,便于進行插入和刪除操作。C.線性表采用鏈接存儲,不必占用一片連續(xù)的存儲單元。D.線性表采用鏈接存儲,便于插入和刪除操作。18①在一個以h為頭的單循環(huán)鏈中,p指針指向鏈尾的條件是(A)【南京理工1998】A.p->next=hB.p->next=NULLC.p->next->next=hD.p->data=-119②若某線性表最常用的操作是存取任一指定序號的元素和在最后進行插入和刪除運算,則運用(A)存儲方式最節(jié)省時間?!竟枮I工業(yè)2023】A.順序表B.雙鏈表C.帶頭結(jié)點的雙循環(huán)鏈表D.單循環(huán)鏈表20②某線性表中最常用的操作是在最后一個元素之后插入一個元素和刪除第一個元素,則采用(D)存儲方式最節(jié)省運算時間?!灸祥_2023】A.單鏈表B.僅有頭指針的單循環(huán)鏈表C.雙鏈表D.僅有尾指針的單循環(huán)鏈表21②設(shè)一個鏈表最常用的操作是在末尾插入結(jié)點和刪除尾結(jié)點,則選用(D)最節(jié)省時間。【合肥工業(yè)2023】A.單鏈表B.單循環(huán)鏈表C.帶尾指針的單循環(huán)鏈表D.帶頭結(jié)點的雙循環(huán)鏈表22②線性表(a1,a2,…,an)以鏈接方式存儲時,訪問第i位置元素的時間復(fù)雜性為(C)【中山1999】A.O(i)B.O(1)C.O(n)D.O(i-1)23③完畢在雙循環(huán)鏈表結(jié)點p之后插入s的操作是(D)。【北方交通1999】A.p->next:=s;s->priou:=p;p->next->priou:=s;s->next:=p->next;B.p->next->priou:=s;p->next:=s;s->priou:=p;s->next:=p->next;C.s->priou:=p;s->next:=p->next;p->next:=s;p->next->priou:=s;D.s->priou:=p;s->next:=p->next;p->next->priou:=s;p->next:=s;24③在雙向循環(huán)鏈表中,在p指針?biāo)赶虻慕Y(jié)點前插入一個指針q所指向的新結(jié)點,其修改指針的操作是(C)。【北京郵電1998】【青島2023】注:雙向鏈表的結(jié)點結(jié)構(gòu)為(llink,data,rlink)。供選擇的答案:A.p->llink=q;q->rlink=p;p->llink->rlink=q;q->llink=q;B.p->llink=q;p->llink->rlink=q;q->rlink=p;q->llink=p->llink;C.q->rlink=p;q->llink=p->llink;p->llink->rlink=q;p->llink=q;D.q->llink=p->llink;q->rlink:=p;p->llink=q;p->llink=q;25③在雙向鏈表存儲結(jié)構(gòu)中,刪除p所指的結(jié)點時需修改指針(A)?!疚靼搽娮涌萍迹保?8】A.p->prior->next=p->nextp->next->prior=p->prior;B.p->prior=p->prior->priorp->prior->next=p;C.p->prior->prior:=pp->next=p->next->nextD.p->next=(p->prior)->priorp->prior=p->next->next二、填空題1①線性表的鏈?zhǔn)酱鎯κ怯胈__malloc______語句實現(xiàn)空間單元動態(tài)分派。2①單鏈表是___線性表_____的鏈接存儲表達。3①頭結(jié)點地址指針為L的循環(huán)單鏈表,空表的判別標(biāo)志是___L->next==NULL___。4①在一個單鏈表中刪除p所指結(jié)點時,應(yīng)執(zhí)行以下操作:q=p->next;p->data=p->next->data;p->next=q->next_________;free(q);5③下段程序的功能:有一頭指針為head的鏈表,將new指針指向的節(jié)點插入到data域為7的節(jié)點的后邊。將程序補充完整。P=head;while(P!=NULL){if(P->data==7)/*找到位置插入結(jié)點后跳出循環(huán)*/{(1)_new->next=p->next_______________;(2)_p->next=new_______________;(3)______break__________;}else(4)___p=p->next______________;/*指針后移*/}if(P==NULL)printf(“\nthepositionisn’texist!”);6③假設(shè)某個不設(shè)頭指針的無頭結(jié)點單向循環(huán)鏈表的長度大于1,s為指向鏈表中某個結(jié)點的指針。算法f30的功能是,刪除并返回鏈表中指針s所指結(jié)點的前驅(qū)。請在空缺處填入合適的內(nèi)容,使其成為完整的算法。typedefstructnode{Dat(yī)aTypedata;structnode*next;}*LinkList;DataTypef30(LinkLists){LinkListpre,p;DataTypee;pre=s;p=s->next;while((1)__p->next!=s____){pre=p;(2)p=p->next____________;}pre->next=(3)__p->next____________;e=p->dat(yī)a;free(p);returne;}判斷題(F)1①單鏈表從任何一個結(jié)點出發(fā),都能訪問到所有結(jié)點。(F)2①線性表的每個結(jié)點只能是一個簡樸類型,而鏈表的每個結(jié)點可以是一個復(fù)雜類型。簡答題1①描述以下幾個概念:順序存儲結(jié)構(gòu)、鏈?zhǔn)酱鎯Y(jié)構(gòu)、順序表、有序表。2②描述以下三個概念的區(qū)別:頭指針、頭結(jié)點、首元結(jié)點。在單鏈表中設(shè)立頭結(jié)點的作用是什么?3②線性表有兩種存儲結(jié)構(gòu):一是順序表,二是鏈表,試問:(1)假如有n個線性表同時共存,并且在解決過程中各表的長度會動態(tài)地發(fā)生變化,線性表的總數(shù)也會自動地?改變。在此情況下,應(yīng)選用哪種存儲結(jié)構(gòu)?為什么?鏈表(2)若線性表的總數(shù)基本穩(wěn)定,且很少進行插入和刪除,但規(guī)定以最快的速度存取線性表中的元素,那么應(yīng)采 用哪種存取結(jié)構(gòu)?為什么?順序表4③假設(shè)本測試中使用的鏈表如圖2.45所示,結(jié)點定義如下:structList{intdata;structList*next;};typedefstructListNode;typedefNode*Link;LinkP,Q,R,S,head;Linkpointer,back,new;對以下單鏈表分別執(zhí)行下列程序段,規(guī)定分別畫出結(jié)果圖。(1)Q=head->next->next;Q指向7(2)R->data=P->data;3變5(3)R->data=P->next->data;3變7S=P;while(S->next!=NULL){S->data=S->data*2;S=S->next;}4101468S=P;while(S!=NULL){S->data=S->data*2;S=S->next;}410146165③假設(shè)本測試中使用的鏈表如圖2.45所示,結(jié)點定義如第4題所示。畫出執(zhí)行如下程序段后各指針及鏈表的示意圖。head=(Link)malloc(sizeof(Node));head->data=0;head->next=NULL;P=head;for(i=1;i<4;i++){new=(Link)malloc(sizeof(Node));new->data=2*i;new->next=NULL;P->next=new;P=new;}創(chuàng)建了一個鏈表,數(shù)據(jù)元素為0,2,4,6,并且p和new都指向尾結(jié)點6③有一鏈表如下圖所示,閱讀程序給出程序的輸出結(jié)果。圖2.466題圖P=head;while(P!=NULL){printf(“\ndata=%d”,P->data);P=P->next;if(P!=NULL) ??P=P->next;}Data=1Data=3Data=5五、編程題1④一個單鏈表,其頭指針為head,編寫一個函數(shù)計算數(shù)據(jù)域為x的節(jié)點個數(shù)。2④已知單鏈表La中數(shù)據(jù)元素按非遞減有序排列。按兩種不同情況,分別寫出算法,將元素x插入到La的合?適位置上,保持該表的有序性:(1)La帶頭結(jié)點;(2)La不帶頭結(jié)點。3④試寫一個算法,實現(xiàn)順序表的就地逆置,即在原表的存儲空間將線性表(a1,a2,…,an?1,an)逆置為(an,a?n?1,…,a2,a1)。4④設(shè)計一個算法,求A和B兩個單鏈表表達的集合的交集、并集合差集。3.7習(xí)題3.7.1知識點:棧的基本概念一、選擇題1①下列哪種數(shù)據(jù)結(jié)構(gòu)常用于函數(shù)調(diào)用(A)。 A.棧B.隊列C.鏈表D.?dāng)?shù)組2①編譯器中通常以哪種數(shù)據(jù)結(jié)構(gòu)解決遞歸程序調(diào)用(C)?? A.隊列?B.?dāng)?shù)組 C.棧D.記錄3①下列哪些數(shù)據(jù)結(jié)構(gòu)可用來實現(xiàn)棧(D)。(1)鏈表(2)數(shù)組(3)樹(4)圖?A.(2),(3) B.(2),(4)C.(1),(4)?D.(1),(2)4②元素的入棧序列是a,b,c,d,則棧的不也許的輸出序列是(C)。A.dcbaB.a(chǎn)bcdC.dcabD.cbad5②已知棧的最大容量為4。若進棧序列為1,2,3,4,5,6,且進棧和出??梢源┎暹M行,則也許出現(xiàn)的出棧序列為(C)。A.5,4,3,2,1,6B.2,3,5,6,1,4C.3,2,5,4,1,6D.1,4,6,5,2,36②若以S和X分別表達進棧和退棧操作,則對初始狀態(tài)為空的棧可以進行的棧操作系列是(D)。A.SXSSXXXXB.SXXSXSSXC.SXSXXSSXD.SSSXXSXX7①對于棧操作數(shù)據(jù)的原則是(B)?!厩鄭u2023】A.先進先出B.后進先出C.后進后出D.不分順序8①棧在(D)中應(yīng)用?!局猩?998】A.遞歸調(diào)用B.子程序調(diào)用C.表達式求值D.A,B,C9②一個棧的輸入序列為123…n,若輸出序列的第一個元素是n,輸出第i(1<=i<=n)個元素是(B)。【中山1999】A.不擬定B.n-i+1C.iD.n-i10②若一個棧的輸入序列為1,2,3,…,n,輸出序列的第一個元素是i,則第j個輸出元素是(D)?!疚錆h2023】A.i-j-1B.i-jC.j-i+1D.不擬定的11②有六個元素6,5,4,3,2,1的順序進棧,問下列哪一個不是合法的出棧序列?(C)【北方交通2023】A.543612B.453162C.346521D.23415612②輸入序列為ABC,可以變?yōu)椋肂A時,通過的棧操作為(B)【中山1999】A.push,pop,push,pop,push,popB.push,push,push,pop,pop,popC.push,push,pop,pop,push,popD.push,pop,push,push,pop,pop13②設(shè)計一個判別表達式中左,右括號是否配對出現(xiàn)的算法,采用(D)數(shù)據(jù)結(jié)構(gòu)最佳?!疚靼搽娮涌萍?996】A.線性表的順序存儲結(jié)構(gòu)B.隊列C.線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)D.棧二、填空題1①棧是一種特殊的線性表,允許插入和刪除運算的一端稱為棧頂,不允許插入和刪除運算的一端稱為棧底。2①對于順序存儲的棧,由于棧的空間是有限的,在進行入棧運算時,也許發(fā)生棧的上溢,在進行出棧 運算時,也許發(fā)生棧的下溢。3①表達式求值是棧應(yīng)用的一個典型例子。4①棧是__一種特殊_____的線性表,其運算遵循____先進后出_____________的原則。【北京科技1997】5②設(shè)有一個空棧,棧頂指針為1000H(十六進制),現(xiàn)有輸入序列為1,2,3,4,5,通過PUSH,PUSH,POP,PUSH,POP,PUSH,PUSH之后,輸出序列是2,3,_______,而棧頂指針值是?_1000C_____H。設(shè)棧為順序棧,每個元素占4個字節(jié)。【西安電子科技1998】6②用S表達入棧操作,X表達出棧操作,若元素入棧的順序為1234,為了得到1342出棧順序,相應(yīng)的S和 X的操作串為_________sxssxsxx__________。【西南交通2023】三、判斷題(F)1①棧具有先進先出的特性。(T)2①棧用于實現(xiàn)子程序調(diào)用。(F)3①棧和鏈表是兩種不同的數(shù)據(jù)結(jié)構(gòu)。(T)4①棧頂?shù)奈恢檬请S著操作而變化的。(T)5①棧和隊列邏輯上都是線性表。(T)6①棧是實現(xiàn)過程和函數(shù)等子程序所必需的結(jié)構(gòu)。【合肥工業(yè)2023】(F)7②即使對不含相同元素的同一輸入序列進行兩組不同的合法的入棧和出棧組合操作,所得的輸出序列也 一定相同?!颈本┼]電1999】(T)8②若輸入序列為1,2,3,4,5,6,則通過一個棧可以輸出序列3,2,5,6,4,1?!旧虾:_\1995】(F)9②若輸入序列為1,2,3,4,5,6,則通過一個??梢暂敵鲂蛄校保?,4,6,2,3?!旧虾:_\1999】四、簡答題1①什么是棧?試舉兩個應(yīng)用實例。2①簡述棧和線性表的差別。3③計算表達式6*3/2-5*1,規(guī)定繪出堆棧的解決過程。5②有5個元素,其入棧順序為:A,B,C,D,E,在各種也許的出棧順序中,以元素C,D最先出棧(即C第一個且D第二個出棧)的順序有哪幾個?【西南交通2023】3.7.2知識點:棧的存儲一、選擇題1①假如以鏈表作為棧的存儲結(jié)構(gòu),則入棧操作時(B)。A.必須判別棧是否滿B.對棧不作任何判別C.必須判別棧是否空D.判別棧元素的類型2①上溢現(xiàn)象通常出現(xiàn)在(A)。A.順序棧的入棧操作過程中B.順序棧的出棧操作過程中C.鏈棧的入棧操作過程中D.鏈棧的出棧操作過程中3①鑒定一個棧ST(最多元素為m0)為空的條件是(B)A.ST->top?。?B.ST->top==0C.ST->top!=m0D.ST->top==m04①鏈表仿真堆棧時,棧空的條件是(B)。??A.top<maxsize-1B.top==NULLC.沒有限制D.top<05①鏈表仿真堆棧時,棧滿的條件是(C)。 A.top<maxsize-1B.top==NULLC.沒有限制D.top<06②在用鏈表仿真堆棧時(假設(shè)stack為棧頂指針),將new指針指向的節(jié)點執(zhí)行入棧操作應(yīng)執(zhí)行(B)A.new->next=stack->next;stack=new;B.new->next=stack;stack=new;C.new->next=stack;stack=new->next;D.stack=new;stack->next=new->next;7②若一個棧以向量V[1..n]存儲,初始棧頂指針top為n+1,則下面x進棧的對的操作是(C)?!灸暇├砉?998】A.top=top+1;V[top]=xB.V[top]=x;top=top+1C.top=top-1;V[top]=xD.V[top]=x;top=top-18②執(zhí)行完下列語句段后,i值為:(B)。【浙江2023】intf(intx){return((x>0)?x*f(x-1):2);}inti;i=f(f(1));A.2B.4C.8D.無限遞歸填空題1②以下語句是堆棧的入棧操作,用全局?jǐn)?shù)組stack仿真堆棧,數(shù)組類型是int,大小是MaxSize,棧頂指針是top,初始化等于-1。voidpush(intvalue){if(top>MaxSize-1)return–1;else{top++;stack[top]=value;}}指出有錯誤的語句:___3_____寫出改正后的語句:_____top==MaxSize-1_______2②以下語句是數(shù)據(jù)從堆棧中取出操作,top為棧頂指針,stack為堆棧數(shù)組。01intpop()02{inttemp;if(top==0)return–1;else{temp=stack[top];top――;}returntemp; 12}指出有錯誤的語句:_______________________寫出改正后的語句:_______8,9互換________________編程題1④假設(shè)一個算術(shù)表達式中可以包含圓括號“(”和“)”,編寫判別給定表達式中所含括號是否對的配對出現(xiàn)的算法。2④編寫斐波那契(Fibonacci)數(shù)列的遞歸算法和迭代算法。F0=0, F1=1,?FFn=?n1+?Fnn2(>=2)3.7.3知識點:隊列的基本概念及其應(yīng)用一、選擇題1①下列哪種數(shù)據(jù)結(jié)構(gòu)常用于系統(tǒng)程序的作業(yè)調(diào)度(B) A.棧 B.隊列C.鏈表D.數(shù)組2①在解決計算機主機與打印機之間速度不匹配問題時通常設(shè)立一個打印數(shù)據(jù)緩沖區(qū),主機將要輸出的數(shù)據(jù)依次寫入該緩沖區(qū),而打印機則從該緩沖區(qū)中取出數(shù)據(jù)打印.該緩沖區(qū)應(yīng)當(dāng)是一個(B)結(jié)構(gòu).A.堆棧B.隊列C.數(shù)組D.線性表3②設(shè)棧S和隊列Q的初始狀態(tài)為空,元素e1、e2、e3、e4、e5、e6依次通過棧S,一個元素出棧后即進入隊列Q,若6個元素出隊的序列是e2、e4、e3、e6、e5、e1,則棧S的容量至少應(yīng)當(dāng)是(C)A.6B.4C.3D.24①棧和隊列的共同點是(C)。【燕山2023一、1(2分)】A.都是先進先出 ? B.都是先進后出C.只允許在端點處插入和刪除元素? D.沒有共同點二、填空題1①棧和隊列都是線性結(jié)構(gòu),對于棧只能在____棧頂______位置插入和刪除元素,對于隊列只能在______隊尾________位置插入元素和_____隊頭_________位置刪除元素。2②隊列的隊尾位置通常是隨著_____入隊_________操作而變化的。3①隊列的特點是_______先進先出_________________?!颈本├砉ぃ?23】4②循環(huán)隊列的引入,目的是為了克服________假溢出________________?!緩B門2023】三、判斷題(T)1①隊列中所有的插入操作都發(fā)生在表的一端,刪除則發(fā)生在表的另一端。(F)2①隊列為先進后出的結(jié)構(gòu)。(F)3①隊列必須用數(shù)組來表達。(T)4①隊列用于操作系統(tǒng)中的作業(yè)調(diào)度。(T)5①棧和隊列邏輯上都是線性表。(T)6①棧和隊列是在程序中常用的兩種數(shù)據(jù)結(jié)構(gòu)。(T)7①棧與隊列是一種特殊操作的線性表。【青島2023】(T)8①棧和隊列都是限制存取點的線性結(jié)構(gòu)。【中科院軟件所1999】(F)9①隊列是一種插入與刪除操作分別在表的兩端進行的線性表,是一種先進后出型結(jié)構(gòu)?!旧虾:_\1998】(F)10①通常使用隊列來解決函數(shù)或過程的調(diào)用?!灸暇┖娇蘸教欤?97】(F)11①隊列邏輯上是一個下端和上端既能增長又能減少的線性表?!旧虾=煌?998】(T)12①棧和隊列都是線性表,只是在插入和刪除時受到了一些限制。【北京郵電2023】四、簡答題1①什么是隊列?試舉兩個應(yīng)用實例。2①說明線性表、棧和隊列的異同點。3①順序隊的“假溢出”是如何產(chǎn)生的?什么是循環(huán)隊列?如何知道循環(huán)隊列是空還是滿?五、編程題1④假設(shè)稱正讀和反讀都相同的字符序列為“回文”,例如‘abba’和‘a(chǎn)bcba’是回文,‘abcde’和‘ababab’則不是回文。試寫一個算法判別讀入的一個以‘@’為結(jié)束符的字符序列是否是“回文”。3.7.4知識點:隊列的存儲一、選擇題1①循環(huán)隊列用數(shù)組A[maxsize]表達,下面哪個選項表達該循環(huán)隊列隊滿(B)A.rear==maxsize-1B.front==(rear+1)%maxsizeC.rear-front==maxsizeD.rear-front==maxsize-12①在用數(shù)組queue[maxsize]仿真隊列時(temp為int型變量),假設(shè)隊列中至少有一個元素,出隊列操作應(yīng)執(zhí)行以下(D)A.temp=queue[rear];rear--;B.rear++;temp=queue[rear];C.temp=queue[front];front--;D.front++;temp=queue[front];3①數(shù)組Q[n]用來表達一個循環(huán)隊列,f為當(dāng)前隊列頭元素的前一位置,r為隊尾元素的位置,假定隊列中元素的個數(shù)小于n,計算隊列中元素的公式為(D)A.r-f;B.(n+f-r)%n;C.n+r-fD.(n+r-f)%n4②判斷一個隊列QU(最多元素為m0)為空的條件是(C)。?A.rear-front==m0?B.rear-front-1==m0 C.front==rear??D.front==rear+15②一個隊列(數(shù)組仿真,最多元素為MaxSize)下列哪個選項表達了隊列空間所有被運用?(A)A.rear–front==MaxSizeB.rear–front==MaxSize–1C.rear==frontD.rear+1==front6②鑒定一個循環(huán)隊列(數(shù)組仿真,最多元素為MaxSize)為空的條件是?(A)A.front==rearB.front!=rearC.front==(rear+1)%MaxSizeD.front!=(rear+1)%MaxSize7①用單鏈表表達的鏈?zhǔn)疥犃械年狀^在鏈表的(A)位置。【清華1998】A.鏈頭B.鏈尾C.鏈中D.任何8②用不帶頭結(jié)點的單鏈表存儲隊列時,其隊頭指針指向隊頭結(jié)點,其隊尾指針指向隊尾結(jié)點,則在進行刪除操作時(D)。【北京理工2023】A.僅修改隊頭指針B.僅修改隊尾指針C.隊頭、隊尾指針都要修改D.隊頭,隊尾指針都也許要修改9②假設(shè)以數(shù)組A[m]存放循環(huán)隊列的元素,其頭尾指針分別為front和rear,則當(dāng)前隊列中的元素個數(shù)為(A)?!颈本┕ど?023】A.(rear-front+m)%mB.rear-front+1C.(front-rear+m)%mD.(rear-front)%m10②循環(huán)隊列存儲在數(shù)組A[0..m]中,則入隊時的操作為(D)。【中山1999】A.rear=rear+1B.rear=(rear+1)mod(m-1)C.rear=(rear+1)modmD.rear=(rear+1)mod(m+1)11②若用一個大小為6的數(shù)組來實現(xiàn)循環(huán)隊列,且當(dāng)前rear和front的值分別為0和3,當(dāng)從隊列中刪除一個元素,再加入兩個元素后,rear和front的值分別為多少?(B)【浙江1999】A.1和5B.2和4C.4和2D.5和112②用鏈接方式存儲的隊列,在進行插入運算時(B)。【北方交通2023】A.僅修改頭指針B.僅修改尾指針C.頭、尾指針都要修改D.頭、尾指針也許都要修改二、填空題1①棧、隊列的建立可使用兩種結(jié)構(gòu):______順序________結(jié)構(gòu)和____鏈?zhǔn)絖_____結(jié)構(gòu)。2②假設(shè)為循環(huán)隊列分派的向量空間為Q[20],若隊列的長度和隊頭指針值分別為13和17,則當(dāng)前尾指針的值為__10____________。3③以下語句是環(huán)狀隊列的出隊操作,用數(shù)組queue仿真環(huán)狀隊列,數(shù)組類型是int,大小是MaxSize,隊尾指針是rear,隊頭指針是front。intdelqueue(){inttemp;if(front==rear)return–1;else{front++;temp=queue[front];queue[front]=0;returntemp;}}指出有錯誤的語句:__________8_______________寫出改正后的語句:________front=(front+1)%MaxSize_______________4②區(qū)分循環(huán)隊列的滿與空,只有兩種方法,它們是____設(shè)標(biāo)志____和______少用一片空間_______?!颈本┼]電2023】5②設(shè)循環(huán)隊列存放在向量sq.data[0..M]中,則隊頭指針sq.front在循環(huán)意義下的出隊操作可表達為__sq.front=(sq.front+1)%(M+1)_____,若用犧牲一個單元的辦法來區(qū)分隊滿和隊空(設(shè)隊尾指針sq.rear),則隊滿的條件為_sq.front==(sq.rear+1)%(M+1)___?!鹃L沙鐵道1997】三、判斷題(T)1①棧和隊列的存儲方式既可是順序方式,也可是鏈接方式。(T)2①單鏈表形式的隊列,頭指針F指向隊列的第一個結(jié)點,尾指針R指向隊列的最后一個結(jié)點。(F)3①循環(huán)隊列通常用指針來實現(xiàn)隊列的頭尾相接?!灸暇┖娇蘸教?996】(T)4①循環(huán)隊列也存在空間溢出問題?!厩鄭u2023】四、簡答題1②設(shè)循環(huán)隊列的容量為40(序號從0到39),現(xiàn)通過一系列的入隊和出隊運算后,有(1)front=11,rear=19;(2)front=19,rear=11;問在這兩種情況下,循環(huán)隊列中各有元素多少個?8,322②假設(shè)CQ[0,…,10]是一個環(huán)狀隊列,初始狀態(tài)front=rear=1,畫出做完下列操作后隊列的頭尾指針的狀態(tài)變化情況,若不能入隊,請指出其元素,并說明理由。(1)d,e,b,g,h入隊;(2)d,e出隊;(3)I,j,k,l,m入隊;(4)b出隊;(5)n,o,p,q,r入隊。3③閱讀下列算法,并回答問題(注:lnitQueue、EnQueue、DeQueue和QueueEmpty分別是隊列初始化、入列、出隊和判隊空的操作)。voidf31(Queue*Q,Queue*Q1,Queue*Q2){inte;lnitQueue(Q1);lnitQueue(Q2);while(!QueueEmpty(Q)){e=DeQueue(Q);if(e>=0)EnQueue(Q1,e);elseEnQueue(Q2,e)}}(1)Q、Q1和Q2都是隊列結(jié)構(gòu),設(shè)隊列Q=(1,0,-5,2,-4,-6,9),其中1為隊頭元素,寫出執(zhí)行f31(&Q,&Q1,&Q2)之后隊列Q、Q1和Q2的狀態(tài);Q為空Q1=(1,0,2,9)Q2=(-5,-4,-6)(2)簡述算法f31的功能。4③閱讀如下程序,并回答下列問題(注:lnitQueue、EnQueue、DeQueue和QueueEmpty分別是隊列初始化、入列、出隊和判隊空的操作)。voidf31(Queue*Q){DataTypee;if(!QueueEmpty(Q)){e=DeQueue(Q);f31(Q);EnQueue(Q,e);}}設(shè)隊列Q=(1,3,5,2,4,6)。寫出執(zhí)行算法f31后的隊列Q;Q=(6,4,3,5,3,1)簡述算法f31的功能。將隊列反轉(zhuǎn)5③閱讀如下程序,它的功能是清空帶頭結(jié)點的鏈隊列Q。請在空缺處填入合適的內(nèi)容,使成為一個完整的算法。typedefstructnode{DataTypedata;structnode*next;}QueueNode;typedefstruct{QueueNode*front;//隊頭指針QueueNode*rear;//隊尾指針}LinkQueue;voidf31(LinkQueue*Q){QueueNode*p,*s;p=(1);while(p!=NULL){s=p;p=p->next;free(s);(2)=NULL;Q->rear=(3);}______p=Q->front->next__________________________Q->front->next=NULL______________________Q->rear=Q->front___________________五、編程題1④假設(shè)將循環(huán)隊列定義為:以變量rear和length分別指示循環(huán)隊列中隊尾元素的位置和內(nèi)含元素的個數(shù)。試給 出此循環(huán)隊列的隊滿條件,并寫出相應(yīng)的入隊列和出隊列的算法。2④假設(shè)以帶頭結(jié)點的循環(huán)鏈表表達隊列,并且只設(shè)一個指針指向隊尾元素結(jié)點(注意不設(shè)頭指針),試編寫相應(yīng) 的隊列初始化、入隊列和出隊列的算法。4.9習(xí)題4.9.1知識點:樹和二叉樹的基本概念一、選擇題1②在一棵具有n個結(jié)點的完全二叉樹中,分支結(jié)點的最大編號為(D)。假定樹根結(jié)點的編號為0。 A.(n-1)/2 B.n/2? ?C.n/2+1 D.n/2-12②在一棵完全二叉樹中,若編號為i的結(jié)點存在左孩子,則左子女結(jié)點的編號為(C)。假定根結(jié)點的編號為0。A.2i ?B.2i-1 ? ?C.2i+1? ????D.2i+23②在一棵具有35個結(jié)點的完全二叉樹中,該樹的高度為(A)。假定空樹的高度為-1。A.5? ? B.6 ?? C.7???? ?D.84②樹中所有結(jié)點的度等于所有結(jié)點數(shù)加(C)。A.0 B.1 ?? C.-1? ? D.25②在一棵具有n個結(jié)點的二叉樹的第i層上(假定根結(jié)點為第0層,i大于等于0而小于等于樹的高度),最多具有(A)個結(jié)點。?A.2i ? ? ? B.2i+1 C.2i?1?? ?? ? D.2n6②在一棵完全二叉樹中,假定根結(jié)點的編號為0,則對于編號為I(I>0)的結(jié)點,其雙親結(jié)點的編號為(B)。?A.(I+1)/2??? ??B.(I-1)/2?C.I/2?? ? ?? D.I/2-17③在一棵具有n個結(jié)點的二叉樹中,所有結(jié)點的空子樹個數(shù)等于(C)。A.nB.n-1C.n+1D.2*n8③在一棵高度為h(假定根結(jié)點的層號為0)的完全二叉樹中,所含結(jié)點個數(shù)不小于(D)。?A.2h?1??? ?? B.2h+1 C.21h?? ? D.2h9②如下的4棵二叉樹中,(D)不是完全二叉樹。 A ? ? B ? C? ? D圖4.4710題圖10②深度為5的二叉樹至多有(C)個節(jié)點。?A.16 ? B.32?C.31 ???? ??D.1011③對一棵滿二叉樹而言,m個樹葉,n個節(jié)點,深度為h,則下列哪個等式對的(D)。A.n=h+m ? ?? B.h+m=2n?C.m=n-1 ???D.n=2h-112②有一棵非空的二叉樹,共有n個節(jié)點,其中分支度為2的結(jié)點有w個,則分支度為1的結(jié)點個數(shù)為(B)。 A.n-2w ? ????B.n-2w-1?C.n-w+1 ??? D.n-2w+113②具有n(n>0)個結(jié)點的完全二叉樹的深度為(C)。A.log2n? ???? B.log2n C.log2n+1 ???D.(log2n)+114②設(shè)樹T的度為4,其中度為1,2,3和4的結(jié)點個數(shù)分別為4,2,1,1則T中的葉子數(shù)為(D)【南京理工2023】A.5B.6C.7D.815②在下述結(jié)論中,對的的是(D)?!灸暇├砉?999】(1)只有一個結(jié)點的二叉樹的度為0;(2)二叉樹的度為2;(3)二叉樹的左右子樹可任意互換;(4)深度為K的完全二叉樹的結(jié)點個數(shù)小于或等于深度相同的滿二叉樹。A.(1)(2)(3)B.(2)(3)(4)C.(2)(4)D.(1)(4)16②若一棵二叉樹具有10個度為2的結(jié)點,5個度為1的結(jié)點,則度為0的結(jié)點個數(shù)是(B)【北京工商2023】A.9B.11C.15D.不擬定17②一棵完全二叉樹上有1001個結(jié)點,其中葉子結(jié)點的個數(shù)是(E)?!疚靼步煌?996】A.250B.500C.254D.505E.以上答案都不對二、填空題1②由3個結(jié)點所構(gòu)成的二叉樹有___5___種形態(tài);16個結(jié)點可構(gòu)造出________種不同形態(tài)的二叉樹。2②將具有82個結(jié)點的完全二叉樹從根結(jié)點開始順序編號,根結(jié)點為第0號,其他結(jié)點自上向下,同一層自 左向右連續(xù)編號。則第40號結(jié)點的雙親結(jié)點的編號為___14_____。3①在一棵樹中,_根_____結(jié)點沒有前驅(qū)結(jié)點。4②假定一棵二叉樹的結(jié)點個數(shù)為18,則它的最小高度為__4____。假定根結(jié)點的高度為0。5②假定一棵三叉樹(即度為3的樹)的結(jié)點個數(shù)為50,則它的最小高度為__4_。假定根結(jié)點的高度為0。6②一棵高度為5的完全二叉樹中,最多包具有__63____個結(jié)點。假定根結(jié)點的高度為0。7②在一棵三叉樹中,度為3的結(jié)點數(shù)有2個,度為2的結(jié)點數(shù)有1個,度為1的結(jié)點數(shù)為2個,那么度為0的結(jié)點數(shù)有___6___個。8②在一棵高度為3的四叉樹中,最多具有__21____結(jié)點。9②一棵深度為6的滿二叉樹有____31__個分支結(jié)點和__32____個葉子。10②一棵具有257個結(jié)點的完全二叉樹,它的深度為___9___。11②設(shè)一棵完全二叉樹具有1000個結(jié)點,則此完全二叉樹有__500____個葉子結(jié)點,有___4999___個度為? 2的結(jié)點,有__1____個結(jié)點只有非空左子樹,有___0___個結(jié)點只有非空右子樹。12②對于一棵具有n個結(jié)點的樹,該樹中所有結(jié)點的度數(shù)之和為__n-1_______。13②一棵具有n個結(jié)點的二叉樹,若它有n0個葉子結(jié)點,則該二叉樹上度為1的結(jié)點n1=_n-2n0+1_____。14②假如結(jié)點A有3兄弟,并且B是A的雙親,則B的度是___4___。15②對于一棵完全二叉樹,設(shè)一個結(jié)點的編號為i,若它的左孩子結(jié)點存在,則其編號為__2*i______;若右 ? 孩子結(jié)點存在,則其編號為_2*i+1_______;而雙親結(jié)點的編號為____i/2_____。16②深度為k的完全二叉樹至少有2k-1個結(jié)點,至多有2k-1個結(jié)點?!緩B門2023】【南京理工1999】17②已知一棵度為3的樹有2個度為1的結(jié)點,3個度為2的結(jié)點,4個度為3的結(jié)點,則該樹有____12_____個葉子結(jié)點?!緩B門2023】18②一棵有n個結(jié)點的滿二叉樹有___0______個度為1的結(jié)點、有__(n+1)/2_______個分支(非終端)結(jié)點和__(n-1)/2_______個葉子,該滿二叉樹的深度為___log2n+1?______。【華中理工2023】三、判斷題(T)1①二叉樹中每個結(jié)點的兩棵子樹是有序的。(F)2①二叉樹中每個結(jié)點有兩棵非空子樹或有兩棵空子樹。(F)3②對于一棵非空二叉樹,它的根結(jié)點作為第一層,則它的第i層上最多能有2i-1個結(jié)點。(T)4②具有12個結(jié)點的完全二叉樹有5個度為2的結(jié)點。(T)5①完全二叉樹的某結(jié)點若無左孩子,則它必是葉結(jié)點。(F)6②二叉樹中不存在度大于2的結(jié)點,當(dāng)某個結(jié)點只有一棵子樹時無所謂左、右子樹之分。(T)7②當(dāng)k≥1時,高度為k的二叉樹至多有21k?個結(jié)點。(F)8②一棵具有n個結(jié)點的完全二叉樹,它的高度是log2n+1。(F)9①二叉樹就是結(jié)點度為2的樹。【長沙鐵道1997】【中科院軟件所1997】(F)10②完全二叉樹一定存在度為1的結(jié)點。【青島2023】(T)11①樹形結(jié)構(gòu)中元素之間存在一個對多個的關(guān)系?!狙嗌?998】(F)12①樹與二叉樹是兩種不同的樹型結(jié)構(gòu)?!緰|南2023】四、簡答題1③已知一棵度為m的樹中有N1個度為1的結(jié)點,N2個度為2的結(jié)點,…,Nm個度為m的結(jié)點。試問該樹中有多少個葉子結(jié)點?2③樹和二叉樹之間有什么樣的區(qū)別與聯(lián)系?【西北工業(yè)1998】【廈門2023】【燕山2023】4.9.2知識點:二叉樹和樹的存儲結(jié)構(gòu)一、選擇題1①在一棵樹的左子女-右兄弟表達法中,一個結(jié)點的右孩子是該結(jié)點的(A)結(jié)點。?A.兄弟??B.子女C.祖先 D.子孫2②在一棵樹的靜態(tài)雙親表達中,每個存儲結(jié)點包含(B)個域。 A.1? B.2C.3 D.43②在一棵二叉樹的二叉鏈表中,空指針域數(shù)等于非空指針域數(shù)加(A)。 A.2 B.1C.0 ?D.-14②二叉樹是非線性數(shù)據(jù)結(jié)構(gòu),所以(C)。 A.它不能用順序存儲結(jié)構(gòu)存儲 B.它不能用鏈?zhǔn)酱鎯Y(jié)構(gòu)存儲C.順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)都能存儲D.順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)都不能使用5②運用二叉鏈表存儲樹,則根結(jié)點的右指針是(B)。【青島2023】A.指向最左孩子B.指向最右孩子C.空D.非空6②在下列存儲形式中,哪一個不是樹的存儲形式?(D)【北方交通2023】A.雙親表達法B.孩子鏈表表達法C.孩子兄弟表達法D.順序存儲表達法7②一棵有n個結(jié)點的二叉樹,按層次從上到下,同一層從左到右順序存儲在一維數(shù)組A[1..n]中,則二叉樹中第i個結(jié)點(i從1開始用上述方法編號)的右孩子在數(shù)組A中的位置是(B)【南京理工2023】A.A[2i](2i<=n)B.A[2i+1](2i+1<=n)C.A[i-2]D.條件不充足,無法擬定填空題1①二叉樹通常有___順序______存儲結(jié)構(gòu)和_____鏈?zhǔn)絖______存儲結(jié)構(gòu)。判斷題(T)1②若二叉樹用二叉鏈表作存貯結(jié)構(gòu),則在n個結(jié)點的二叉樹鏈表中只有n-1個非空指針域。(T)2①樹適合于表達層次關(guān)系。(T)3②完全二叉樹的存儲結(jié)構(gòu)通常采用順序存儲結(jié)構(gòu)?!灸暇┖娇蘸教欤?96】四、簡答題1②描述二叉樹的順序存儲。2②描述二叉樹的鏈?zhǔn)酱鎯Α?.9.3知識點:樹、森林向二叉樹的轉(zhuǎn)換選擇題1②把一棵樹轉(zhuǎn)換為二叉樹后,這棵二叉樹的形態(tài)是(A)。 A.唯一的?????? ?B.有多種 C.有多種,但根結(jié)點都沒有左孩子??D.有多種,但根結(jié)點都沒有右孩子2②如下圖所示的二叉樹T2是由森林T1轉(zhuǎn)換而來的二叉樹,那么森林T1有(C)個葉子結(jié)點。AABEDJIGHCF圖4.482題圖 A.4 ?B.5C.6? D.7填空題1②設(shè)森林F中有4棵樹,第1、2、3、4棵樹的結(jié)點個數(shù)分別為n1、n2、n3、n4,當(dāng)把森林F轉(zhuǎn)換成一棵二叉樹后,其根結(jié)點的左子樹中有____n1-1____________個結(jié)點。2②將森林或樹轉(zhuǎn)換成二叉樹時,所有的水平線段以左邊結(jié)點為軸心_順時針__旋轉(zhuǎn)45o。3②運用樹的孩子兄弟表達法存儲,可以將一棵樹轉(zhuǎn)換為_二叉樹________。【重慶2023】三、判斷題(T)1②將森林或樹轉(zhuǎn)換成二叉樹時,在所有相鄰兄弟結(jié)點(森林中每棵樹的根結(jié)點可以當(dāng)作是兄弟結(jié)點)之間加一水平連線。(T)2②將森林或樹轉(zhuǎn)換成二叉樹時,對每個非葉子結(jié)點k,除了其最左邊的孩子結(jié)點外,刪去k與其他孩子結(jié)點的連線。(F)3②將一棵樹轉(zhuǎn)換成二叉樹后,根結(jié)點沒有左子樹。(F)4②必須把一般樹轉(zhuǎn)換成二叉樹后才干進行存儲?!灸暇┖娇蘸教?997】四、簡答題1③把如圖所示的樹轉(zhuǎn)化成二叉樹。ABABDGJMIKLCEFH2③如何把森林轉(zhuǎn)換成二叉樹。4.491題圖4.9.4知識點:樹與二叉樹的遍歷圖一、選擇題1②已知某二叉樹的后序遍歷序列是dabec,中序遍歷序列是debac,則它的前序遍歷序列是(D)。 A.a(chǎn)cbed B.decabC.deabc D.cedba2②在一棵非空的二叉樹的中序遍歷序列中,根節(jié)點的右邊(B)。A.只有左子樹上的所有節(jié)點B.只有右子樹上的所有節(jié)點C.只有左子樹上的部分節(jié)點D.只有右子樹上的部分節(jié)點3②下列二叉樹的后序遍歷序列是(C)。aabcdfgexyh圖4.503題圖 A.abdecfghxy ?B.abdgcehfxyC.gdbhexyfca D.dgbaehcxfy4②任何一棵二叉樹的葉節(jié)點在前序、中序和后序遍歷序列中的相對順序(A)。 A.不發(fā)生改變? B.發(fā)生改變C.不能擬定?D.以上都不對5②線索二叉樹是一種(C)結(jié)構(gòu)。?A.邏輯 B.邏輯和存儲C.物理 ?D.線性6②將下圖的二叉樹按中序線索化,結(jié)點X的右指針和Y的左指針分別指向(C)?A.A,D B.B,CC.D,A D.C,AAABDCEXY圖4.516題圖7②引入線索二叉樹的目的是(A)。【南京理工1998】?A.加快查找結(jié)點的前驅(qū)或后繼結(jié)點的速度?B.為了能在二叉樹中方便插入和刪除?C.為了能方便找到雙親? ???D.使二叉樹的遍歷結(jié)果唯一8②樹的后根遍歷序列等同于該樹相應(yīng)的二叉樹的(B)。【北京理工2023】A.先序序列B.中序序列C.后序序列9②一棵二叉樹的前序遍歷序列為ABCDEFG,它的中序遍歷序列也許是(B)【北京工業(yè)2023】A.CABDEFGB.ABCDEFGC.DACEFBGD.ADCFEG10②已知一棵二叉樹的前序遍歷結(jié)果為ABCDEF,中序遍歷結(jié)果為CBAEDF,則后序遍歷的結(jié)果為(A)?!菊憬?999】A.CBEFDAB.FEDCBAC.CBEDFAD.不定11②某二叉樹中序序列為A,B,C,D,E,F,G,后序序列為B,D,C,A,F,G,E則前序序列是:(B)【南京理工2023】A.E,G,F(xiàn),A,C,D,BB.E,A,C,B,D,G,F(xiàn)C.E,A,G,C,F(xiàn),B,DD.上面的都不對12②對于前序遍歷與中序遍歷結(jié)果相同的二叉樹為(BF);對于前序遍歷和后序遍歷結(jié)果相同的二叉樹為(B)?!局锌圃河嬎闼?999】A.一般二叉樹B.只有根結(jié)點的二叉樹C.根結(jié)點無左孩子的二叉樹D.根結(jié)點無右孩子的二叉樹E.所有結(jié)點只有左子數(shù)的二叉樹F.所有結(jié)點只有右子樹的二叉樹二、填空題1②在二叉樹的一維數(shù)組存儲方式中,父節(jié)點和右孩子的索引值之間滿足的關(guān)系是_2倍加1_______。2②在中序線索化二叉樹時,采用__中序______遍歷方法最合適。3②線索二叉樹中的左線索指向其__前驅(qū)______,右線索指向其__后繼______?!竟枮I工業(yè)2023】三、判斷題(T)1②
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 骨盆損傷的健康宣教
- 扁桃體癌的健康宣教
- 孕期牙周炎的健康宣教
- 紅皮病型銀屑病的臨床護理
- 《Java程序設(shè)計及移動APP開發(fā)》課件-第05章
- 創(chuàng)傷性骨化性肌炎的健康宣教
- JJF(黔) 86-2024 液體流量計在線校準(zhǔn)規(guī)范
- 規(guī)劃業(yè)務(wù)拓展的路線圖計劃
- 電視劇編劇承攬合同三篇
- 光掃描數(shù)字化儀相關(guān)行業(yè)投資規(guī)劃報告范本
- 2023年高中音樂課件大宅門-電視劇《大宅門》主題歌
- IATF16949-過程審核檢查表-(含審核記錄)-
- 《萬疆》歌詞全篇
- 電大勞動與社會保障法期末考試(已排版)
- JJF(紡織)074-2018羽絨蓬松度儀校準(zhǔn)規(guī)范
- GB/T 709-2019熱軋鋼板和鋼帶的尺寸、外形、重量及允許偏差
- GB/T 23935-2009圓柱螺旋彈簧設(shè)計計算
- 癲癇發(fā)作急救及應(yīng)急預(yù)案考核試題及答案
- 【課件】讀后續(xù)寫 suspended coffee
- GB/T 14048.15-2006低壓開關(guān)設(shè)備和控制設(shè)備第5-6部分:控制電路電器和開關(guān)元件接近傳感器和開關(guān)放大器的DC接口(NAMUR)
- 2023年上海各區(qū)中考物理一模卷及答案
評論
0/150
提交評論