版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
國家開放大學(xué)
2023?2024學(xué)年《數(shù)據(jù)結(jié)構(gòu)》模擬試卷及答案解析
第一章緒論
一、選擇題
1、把數(shù)據(jù)存儲到計算機(jī)中,并具體體現(xiàn)數(shù)據(jù)元素間的邏輯結(jié)構(gòu)稱為()o
A.給相關(guān)變量分配存儲單元
B.物理結(jié)構(gòu)
C.算法的具體實(shí)現(xiàn)
D.邏輯結(jié)構(gòu)
2、下列說法中,不正確的是()o
A.數(shù)據(jù)項(xiàng)是數(shù)據(jù)中不可分割的最小可標(biāo)識單位
B.數(shù)據(jù)元素是數(shù)據(jù)的基本單位
C.數(shù)據(jù)可有若干個數(shù)據(jù)元素構(gòu)成
D.數(shù)據(jù)項(xiàng)可由若干個數(shù)據(jù)元素構(gòu)成
3、一個存儲結(jié)點(diǎn)存儲一個()0
A.數(shù)據(jù)元素
B.數(shù)據(jù)結(jié)構(gòu)
C.數(shù)據(jù)項(xiàng)
D.數(shù)據(jù)類型
4、數(shù)據(jù)結(jié)構(gòu)中,與所使用的計算機(jī)無關(guān)的是數(shù)據(jù)的()。
A.存儲結(jié)構(gòu)
B.物理和存儲結(jié)構(gòu)
C.物理結(jié)構(gòu)
D.邏輯結(jié)構(gòu)
5、下列的敘述中,不屬于算法特性的是()o
A.可行性
B.輸入性
第1頁共64頁
C.可讀性
D.有窮性
6、算法的時間復(fù)雜度與()有關(guān)。
A.計算機(jī)的操作系統(tǒng)
B.算法本身
C.數(shù)據(jù)結(jié)構(gòu)
D.所使用的計算機(jī)。
7、下面程序段的時間復(fù)雜度是()。
i=s=O;
while(s<n){
i++;
s+=i;
)
A.O(n0.5)B.O(log2n)C.0(n)D.O(l)
8、下面程序段的時間復(fù)雜度是()o
intf(unsignedintn){
if(n==0||n==l)return1;
elsereturnn*f(n-l);
)
A.O(l)B.O(log2n)C.O(n!)D.O(n)
10、在數(shù)據(jù)結(jié)構(gòu)中,從邏輯上可以把數(shù)據(jù)結(jié)構(gòu)分為()。
A.動態(tài)結(jié)構(gòu)和靜態(tài)結(jié)構(gòu)B.緊湊結(jié)構(gòu)和非緊湊結(jié)構(gòu)
C.內(nèi)部結(jié)構(gòu)和外部結(jié)構(gòu)D.線性結(jié)構(gòu)和非線性結(jié)構(gòu)
11、執(zhí)行下面程序段時,執(zhí)行S語句的次數(shù)為()o
for(inti=l;i<=n;i++)
for(intj=l;i<=i;j++)
S;
A.n2B.n2/2C.n(n+1)D.n(n+l)/2
12、數(shù)據(jù)的存儲結(jié)構(gòu)包括數(shù)據(jù)元素的表示和()。
A.數(shù)據(jù)元素間的關(guān)系的表示
第2頁共64頁
B.數(shù)據(jù)處理的方法
C.數(shù)據(jù)元素的類型
D.相關(guān)算法
13、樹狀結(jié)構(gòu)中數(shù)據(jù)元素的位置之間存在()的關(guān)系。
A.一對一
B.多對多
C.每一個元素都有一個直接前驅(qū)和一個直接后繼
D.一對多
14、一種邏輯結(jié)構(gòu)()。
A.與存儲該邏輯結(jié)構(gòu)的計算機(jī)相關(guān)
B.只能有唯一-的存儲結(jié)構(gòu)
C.可以有不同的存儲結(jié)構(gòu)
D.是指某一種數(shù)據(jù)元素的性質(zhì)
15、把數(shù)據(jù)存儲到計算機(jī)中,并具體體現(xiàn)數(shù)據(jù)元素間的邏輯結(jié)構(gòu)稱為()o
A.邏輯結(jié)構(gòu)
B.數(shù)據(jù)元素的存儲
C.存儲結(jié)構(gòu)
D.給數(shù)據(jù)元素分配存儲空間
二、判斷題
1.數(shù)據(jù)元素是數(shù)據(jù)的最小單位。()
2.數(shù)據(jù)的邏輯結(jié)構(gòu)是指各數(shù)據(jù)元素之間的邏輯關(guān)系,是用戶根據(jù)應(yīng)用需要建立的])
3.算法和程序原則上沒有區(qū)別,在討論數(shù)據(jù)結(jié)構(gòu)時二者是通用的。()
4.數(shù)據(jù)的邏輯結(jié)構(gòu)與數(shù)據(jù)元素本身的內(nèi)容和形式無關(guān)。()
5.算法和程序都應(yīng)具有下面一些特征:有輸入,有輸出,確定性,有窮性,有效性。()
6.只有用面向?qū)ο蟮挠嬎銠C(jī)語言才能描述數(shù)據(jù)結(jié)構(gòu)算法。()
7.數(shù)據(jù)元素可以有一個或多個數(shù)據(jù)項(xiàng)組成。()
8.數(shù)據(jù)元素之間的抽象關(guān)系稱為物理結(jié)構(gòu)。()
9.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機(jī)中的表示稱為邏輯結(jié)構(gòu)。()
10.數(shù)據(jù)的邏輯結(jié)構(gòu)是與存儲該結(jié)構(gòu)的計算機(jī)相關(guān)的。()
第3頁共64頁
ints=0;
for(int1=1;l<=n;I++){
intp=l;
for(intj=l;j<=l;j++)
P*=j;
s+=P;
)
returns;
)
4、intfun(intn)
{
int1=1,s=l;
while(s<n)
s+=++l;
returnI;
}
第5頁共64頁
第二章線性表
一、選擇題
1、設(shè)有一個長度為n的順序表,要在第i個元素之前(也就是插入元素作為新
表的第i個元素),插入一個元素,則移動元素個數(shù)為()。
A.n-iB.n-i-1C.n-i+1D.i
2、設(shè)有一個長度為n的順序表,要刪除第i個元素移動元素的個數(shù)為()o
A.IB.n-i-1C.n-iD.n-i+1
3、在一個單鏈表中,p、q分別指向表中兩個相知的結(jié)點(diǎn),且q所指結(jié)點(diǎn)是p所
指結(jié)點(diǎn)的直接后繼,現(xiàn)要刪除q所指結(jié)點(diǎn),可用語句()。
A.q->next=NULLB.p->next=q->next
C.p=q->nextD.p->next=q
4、在一個單鏈表中p所指結(jié)點(diǎn)之后插入一個s所指的結(jié)點(diǎn)時,可執(zhí)行()o
A.p->next=s;s->next=p->nextB.p->next=s->next;
C.s->next=p->next;p->next=s;D.p=s->next
5、非空的單向循環(huán)鏈表的尾結(jié)點(diǎn)滿足()(設(shè)頭指針為head,指針p指向尾結(jié)
點(diǎn))。
A.p->next==headB.p==NULL
C.p==headD.p->next==NULL
、鏈表不具有的特點(diǎn)是()
60
A.不必事先估計存儲空間
B.可隨機(jī)訪問任一元素
C.邏輯上相鄰的元素在物理位置上不一定相鄰
D.插入刪除不需要移動元素
7、帶頭結(jié)點(diǎn)的鏈表為空的判斷條件是()(設(shè)頭指針為head)。
A.head->next==head
B.head==NULL
C.head->next==NULL
D.head!=NULL
第6頁共64頁
8、在一個長度為n的順序表中為了刪除第5個元素,由第6個元素開始從后到
前依次移動了15個元素。則原順序表的長度為()。
A.19B.21C.20D.25
9、有關(guān)線性表的正確說法是()o
A.線性表至少要求一個元素
B.每個元素都有一個直接前驅(qū)和一個直接后繼
C.表中的元素必須按由小到大或由大到下排序
D.除了一個和最后一個元素外,其余元素都有一個且僅有一個直接前驅(qū)和一個
直接后繼
10、向一個有127個元素的順序表中插入一個新元素,并保持原來的順序不變,
平均要移動()個元素。
A.63.5B.7
C.63D.8
11、一個順序表第一個元素的存儲地址是90,每個元素的長度為2,則第6個元
素的地址是()o
A.106B.98
C.102D.100
12、在一個不帶頭結(jié)點(diǎn)的單循環(huán)鏈表中,p、q分別指向表中第一個結(jié)點(diǎn)和尾結(jié)
點(diǎn),現(xiàn)要刪除第一個結(jié)點(diǎn),且p、q仍然分別指向新表中第一個結(jié)點(diǎn)和尾結(jié)點(diǎn)。
可用的語句是p=p->next;和()o
A.q->next=pB.p->next=q
C.q=pD.p=q->next
13、在線性表的順序結(jié)構(gòu)中,以下說法正確的是()o
A.邏輯上相鄰的元素在物理位置上不一定相鄰
B.數(shù)據(jù)元素是不能隨機(jī)訪問的
C.進(jìn)行數(shù)據(jù)元素的插入、刪除效率較高
D.邏輯上相鄰的元素在物理位置上也相鄰
14、對鏈表,以下敘述中正確的是()。
A.不能隨機(jī)訪問任一結(jié)點(diǎn)
第7頁共64頁
B.插入刪除元素的操作一定要要移動結(jié)點(diǎn)
C.結(jié)點(diǎn)占用的存儲空間是連續(xù)的
D.可以通過下標(biāo)對鏈表進(jìn)行直接訪問
15、設(shè)有一個長度為n的順序表,要在第i個元素之前(也就是插入元素作為新
表的第i個元素),插入一個元素,則移動元素個數(shù)為()。
A.n-i+1B.i
C.n-i-1D.n-i
16、在一個單鏈表HL中,若要向表頭插入一個由指針p指向的結(jié)點(diǎn),則執(zhí)行
A.HL=p;p->next=HL;
B.p->next=HL;HL=p;
C.p->next=HL;p=HL;
D.p->next=HL->next;HL->next=p;
17、在一個單鏈表中,已知q所指結(jié)點(diǎn)是p所指結(jié)點(diǎn)的前驅(qū)結(jié)點(diǎn),若在q和p
之間插入s結(jié)點(diǎn),則以下操作哪個是正確的()。
A.s->next=p->next;p->next=s;
B.p->next=s->next;s->next=p;
C.p->next=s;s->next=q;
D.q->next=s;s->next=p;
、在循環(huán)雙鏈表的所指結(jié)點(diǎn)之后插入所指結(jié)點(diǎn)的操作是()
18psc
A.p->right=s;s->left=p:p->right->left=s;s->right=p->right;
B.p->right=s;p->right->left=s;s->left=p;s->right=p->right;
C.s->left=p;s->right=p->right:p->right=s;p->right->left=s;
D.s->left=p;s->right=p->righl;p->right->leri=s;p->righl=s;
19、若HL為一個不帶表頭結(jié)點(diǎn)的循環(huán)單鏈表的表頭指針,若有HL->next=二HL
條件存在,則該循環(huán)單鏈表是()o
A.空表B.只有1個元素;
C.空表或只有一個元素D.非空表
20、若HL為一個帶表頭結(jié)點(diǎn)的單鏈表的表頭指針,則該表為空表的條件是
第8頁共64頁
()o
A.HL==NULLB.HL->next==NULL
C.HL->next==HLD.HL!=NULL
21、設(shè)頭指針為head的非空的單向鏈表,指針p指向尾結(jié)點(diǎn),則通過以下操作
()可使其成為單向循環(huán)鏈表。
選擇一項(xiàng):
A.head=p;B.p=head;
C.p->next=NULL;D.p->next=head;
二、判斷題
1、設(shè)有一個不帶頭結(jié)點(diǎn)的單向循環(huán)鏈表,結(jié)點(diǎn)的指針域?yàn)閚ext,指針p指向尾
結(jié)點(diǎn),現(xiàn)要使p指向第一個結(jié)點(diǎn),可用語句p=p->npxt;c()
2、設(shè)有一個單向鏈表,結(jié)點(diǎn)的指針域?yàn)閚ext,頭指針為head,p指向尾結(jié)點(diǎn),
為了使該單向鏈表改為單向循環(huán)鏈表,可用語句p->next二head。()
3、設(shè)有一個單向循環(huán)鏈表,結(jié)點(diǎn)的指針域?yàn)閚ext,頭指針為head,指針p指向
表中某結(jié)點(diǎn),若邏輯表達(dá)式p->next==head;的結(jié)果為真,則p所指結(jié)點(diǎn)為尾垢點(diǎn)。
()
4、要在一個單向鏈表中p所指向的結(jié)點(diǎn)之后插入一個s所指向的新結(jié)點(diǎn),若鏈
表中結(jié)點(diǎn)的指針域?yàn)閚ext,可執(zhí)行p->next=s;s->next=p->next;的操作。[)
5、要在一個單向鏈表中刪除p所指向的結(jié)點(diǎn),已知q指向p所指結(jié)點(diǎn)的直接前
驅(qū)結(jié)點(diǎn),若鏈表中結(jié)點(diǎn)的指針域?yàn)閚ext,則可執(zhí)行q->next=p->next。()
6、要在一個帶頭結(jié)點(diǎn)的單向循環(huán)鏈表中刪除頭結(jié)點(diǎn),得到一個新的不帶頭結(jié)點(diǎn)
的單向循環(huán)鏈表,若結(jié)點(diǎn)的指針域?yàn)閚ext,頭指針為head,尾指針為p,則可執(zhí)
行hedd=hedd->next;p->nexl=hedd;。()
7、設(shè)有一個單向循環(huán)鏈表,頭指針為head,鏈表中結(jié)點(diǎn)的指針域?yàn)閚ex3P指
向尾結(jié)點(diǎn)的直接前驅(qū)結(jié)點(diǎn),若要刪除尾結(jié)點(diǎn),得到一個新的單向循環(huán)鏈表,可執(zhí)
行操作p->next=head;。()
8、設(shè)有一個長度為40的順序表,要刪除第8個元素需移動元素的個數(shù)為3K)
9、線性表用關(guān)鍵字的順序方式存儲,可以用二分法排序。()
第9頁共64頁
10、線性表用順序方式存儲可以隨機(jī)訪問。()
三、程序填空
1、設(shè)線性表以不帶頭結(jié)點(diǎn)的單向鏈表存儲,鏈表頭指針為head,以下程序的功
能是輸出鏈表中各結(jié)點(diǎn)中的數(shù)據(jù)域data,完成程序中空格部分。
#defineNULL0
voidmain()
{NODE*head/p;
p=head;/*p為工作指針*/
do
{printf(/z%d\n;
[1];
[2];
}while
[3];
2、設(shè)有一個頭指針為head的不帶頭結(jié)點(diǎn)單向鏈表,p、q是指向鏈表中結(jié)
點(diǎn)類型的指針變量,P指向鏈表中結(jié)點(diǎn)。,(設(shè)置表中沒有結(jié)點(diǎn)的數(shù)據(jù)域與結(jié)點(diǎn)口
的數(shù)據(jù)域相同),寫出相關(guān)語句
(1)使該單向鏈表成為單向循環(huán)鏈表
(2)插入結(jié)點(diǎn)s,使它成為a結(jié)點(diǎn)的直接前驅(qū)
q=p;x=p->data;
while([4])q=q->next;
q->next=head;
q=p;p=p->next;
while(p->data!=x)
{q=p;
[5]
)
s->next=p;
第10頁共64頁
6
3、設(shè)有一個不帶頭結(jié)點(diǎn)的單向鏈表,頭指針為head,p、prep是指向結(jié)點(diǎn)類型
的指針,該鏈表在輸入信息時不慎把相鄰兩個結(jié)點(diǎn)的信息重復(fù)輸入,以下程序段
是在該單向鏈表中查找這相鄰兩個結(jié)點(diǎn),把該結(jié)點(diǎn)的數(shù)據(jù)域data打印出來,并
把其中之一從鏈表中刪除,填寫程序中的空格。
prep=head;
p=prep->next;
while(p->data!=prep->data)
(
prep=p;
[7];
)
printf("min=%d”,
[8]);
prep->next=[9];
第11頁共64頁
第三章數(shù)組和廣義表
一、選擇題
1.若讓元素1,2,3依次進(jìn)棧,則出棧順序不可能為()o
A.3,2,1B.2,1,3
C.3,1,2D.1,3,2
2.一個隊(duì)列的入隊(duì)序列是1,2,3,4。則隊(duì)列的輸出序列是()o
A.4,3,2,1B.1,2,3,4
C.1,4,3,2D.3,2,4,1
3.一個棧的進(jìn)棧序列是10,20,30,40,50,則棧的不可能輸出序列是()
(進(jìn)棧出??梢越惶孢M(jìn)行)。
A.10,20z^0,40z50R.40,30,50,10,20
C.40,50,30,20,10D.50,40,30,20,10
4.元素4,6,8,10按順序依次進(jìn)棧,按該棧的可能輸出序列依次入隊(duì)列,該
隊(duì)列的可能輸出序列是()(進(jìn)棧出??梢越惶孢M(jìn)行)。
A.10,8,4,6B.10,6,4,8
C.8,4,6,10D.10,8,6,4
5.向順序棧中壓入新元素時,應(yīng)當(dāng)()o
A.先移動棧頂指針,再存入元素
B.先存入元素,再移動棧頂指針
C.先后次序無關(guān)緊要
D.同時進(jìn)行
6.在一個棧頂指針為top的鏈棧中,將一個p指針?biāo)傅慕Y(jié)點(diǎn)入棧,應(yīng)執(zhí)行()0
A.lup->nexl=p;
B.p->next=top->next;top->next=p;
C.p->next=top;top=p;
D.p->next=top->next;top=top->next;
7.在一個棧頂指針為top的鏈棧中刪除一個結(jié)點(diǎn)時,用x保存被刪結(jié)點(diǎn)的值,
則執(zhí)行()o
第12頁共64頁
A.x=top;top=top->next;
B.x=top->data;
C.top=top->next;x=top->data;
D.x=top->data;top=top->next;
8.一般情況下,將遞歸算法轉(zhuǎn)換成等價的非遞歸算法應(yīng)該設(shè)置()o
A.棧B.隊(duì)列
C.堆?;蜿?duì)列D.數(shù)組
9.表達(dá)式a*(b+c)-d的后綴表達(dá)式是()<>+++
A.abcd*+-B.abc+*d-C.abc*++d-D.-+*abcd
10.判斷一個順序隊(duì)列sq(最多元素為m)為空的條件是()o
A.sq->rear-sq->front==mB.sq->rear-sq->front-l==m
C.sq->front==sq->rparD.sq->front==sq->rpar+1
11.判斷一個循環(huán)隊(duì)列Q(最多元素為m)為滿的條件是()o
A.Q->front==Q->rearB.Q->front!=Q->rear
C.Q->front==(Q->rear+l)%mD.Q->front!=(Q->rear+l)%m
12.判斷棧s滿(元素個數(shù)最多n個)的條件是()o
A.s->top==0B.s->top!=0
C.s->top==n-lD.s->top!=n-l
13.一個隊(duì)列的入隊(duì)順序是a,b,c,d,則離隊(duì)的順序是()。
A.a,d,cbB.a,b,c,dC.d,c,b,aD.c,b,d,a
14.如果以鏈表作為棧的存儲結(jié)構(gòu),則退棧操作時()。
A.必須判斷棧是否滿B.判斷棧元素類型
C.必須判斷棧是否空D.對棧不作任何判斷
15.在解決沖算機(jī)主機(jī)與打卬機(jī)之間速度不匹配問題時通常設(shè)置一個打卬數(shù)據(jù)緩
沖區(qū),主機(jī)將要輸出的數(shù)據(jù)依次寫入緩沖區(qū)中,而打印機(jī)則從緩沖區(qū)中取出數(shù)據(jù)
打印,該緩沖區(qū)應(yīng)該是一個()結(jié)構(gòu)。
A.堆棧B.隊(duì)列C.數(shù)組D.先性表
16.一個遞歸算法必須包括()o
A.遞歸部分B.終止條件和遞歸部分
第13頁共64頁
C.迭代部分D.終止條件和迭代部分
17.從一個棧頂指針為top的鏈棧中刪除一個結(jié)點(diǎn)時,用變量x保存被刪結(jié)點(diǎn)的
值,則執(zhí)行()0
A.x=top->data;tcp=top->next;B.x=top->data;
C.top=top->next;x=top->data;D.top=top->next;x=data;
18.在一個鏈隊(duì)中,假設(shè)f和r分別為隊(duì)頭和隊(duì)尾指針,則刪除一個結(jié)點(diǎn)的運(yùn)算
為()。
A.r=f->next;B.r=r->next;C.f=f->next;D.f=r->next;
19.在一個鏈隊(duì)中,假設(shè)f和r分別為隊(duì)頭和隊(duì)尾指針,則插入s所指結(jié)點(diǎn)的運(yùn)
算為()。
A.f->next=s;f=s;B.r->next=s;r=s;
C.s->npxt=r;r=<;;D.s->npxt=f;f=s;
20.在一個不帶頭結(jié)點(diǎn)的鏈隊(duì)中,假設(shè)f和r分別為隊(duì)頭和隊(duì)尾指針,則從該對
列中刪除一個結(jié)點(diǎn)并把結(jié)點(diǎn)的值保存在變量x中的運(yùn)算為()。+++
A.x=r->data;r=r->next;B.r=r->next;x=r->data
C.x=f->data;f=f->next;D.f=f->next;x=f->data
21.棧和隊(duì)列的共同特點(diǎn)是(
A.都是先進(jìn)后出B.元素都可以隨機(jī)進(jìn)出
C.只容許在端點(diǎn)處插入和刪除元素D.都是先進(jìn)先出
22.棧的插入和刪除操作在()進(jìn)行。
A.棧頂B.棧底
C.任意位置D.指定位置
23.在一個順序隊(duì)列中,隊(duì)首指針指向隊(duì)首元素的()位置。
A.前一個B.后一,個
C.當(dāng)刖D.后面
24.當(dāng)利用大小為n的數(shù)組順序存儲一個隊(duì)列時,該隊(duì)列的最大長度為(
A.n-2B.n-1C.nD.n+1
25.從一個順序存儲的循環(huán)隊(duì)列中刪除一個元素時,首先需要()o
A.隊(duì)頭指針加一B.隊(duì)頭指針減一
第14頁共64頁
C.取出隊(duì)頭指針?biāo)傅脑谼.取出隊(duì)尾指針?biāo)傅脑?/p>
二、判斷題
1.鏈?zhǔn)綏Ec順序棧相比,一個明顯的優(yōu)點(diǎn)是通常不會出現(xiàn)棧滿的情況。()
2.在一個順序存儲的循環(huán)隊(duì)列中,隊(duì)頭指針指向隊(duì)頭元素的后一個位置。()
3.棧和隊(duì)列都是順序存取的線性表,但它們對存取位置的限制不同。()
4.若讓元素1,2,3依次進(jìn)棧,則出棧次序1,3,2是不可能出現(xiàn)的情況。()
5.在用單鏈表表示的鏈?zhǔn)疥?duì)列Q中,隊(duì)頭指針為Q->front,隊(duì)尾指針為Q->rear,
則隊(duì)空條件為Q->front==Q->rear。()
6.遞歸定義的數(shù)據(jù)結(jié)構(gòu)通常用遞歸算法來實(shí)現(xiàn)對它的操作。()
7.遞歸的算法簡單、易懂、容易編寫,而且執(zhí)行效率也高。()
8.遞歸調(diào)用算法與相同功能的非遞歸算法相比,主要問題在于重復(fù)計算太多,
而且調(diào)用本身需要分配額外的空間和傳遞數(shù)據(jù)和控制,所以時間與空間開銷通常
都比較大。()
9.用非遞歸方法實(shí)現(xiàn)遞歸算法時一定要使用遞歸工作棧。()
10.棧是限定在表的一端進(jìn)行插入和刪除操作的線性表,又稱為先進(jìn)后出表』)
11.隊(duì)列的特性是先進(jìn)后出。()
12.往棧中插入元素的噪作方式是:先寫入元素,后移動棧頂指針。()
13彳盾環(huán)隊(duì)列隊(duì)頭指針在隊(duì)尾指針前一個位置,隊(duì)列是“滿”狀態(tài)。()
14.在隊(duì)列的順序存儲結(jié)構(gòu)中,當(dāng)插入一個新的隊(duì)列元素時,尾指針后移,當(dāng)刪
除一個元素隊(duì)列時,頭指針后移。()
15.向一個棧頂指針為h的鏈棧(結(jié)點(diǎn)的指針域?yàn)閚ext)中插入一個s所指結(jié)點(diǎn)時,
先執(zhí)行s?>next=h,再執(zhí)行h=s操作。()
16.一個遞歸算法不必包括遞歸終止條件。()
17.在一個鏈?zhǔn)疥?duì)列中,若隊(duì)頭指針與隊(duì)尾指針的值相同,則表示該隊(duì)列至多有
1個結(jié)點(diǎn)。()
18.在用循環(huán)單鏈表表示的鏈?zhǔn)疥?duì)列中,可以不設(shè)隊(duì)頭指針,僅在鏈尾設(shè)置隊(duì)尾
指針。()
第15頁共64頁
三、程序選擇題
1.在下面空格處填寫一條語句,以使下面的鏈?zhǔn)疥?duì)列全部元素出隊(duì)的算法完整。
intwrite(LinkQueue*q)
{QueueNode*p;
if(q->front==q->rear)/*隊(duì)空*/
{printf("隊(duì)空!無元素可取〃);
exit(O);
)
while(q->front->next!=NULL)
{p=q->front->next;
q->front->next=p->next;/*出隊(duì)*/
printf("%4d〃,p->data);
free(p);/*釋放己出隊(duì)結(jié)點(diǎn)*/
)
/*隊(duì)空時,頭尾指針指向頭結(jié)點(diǎn)*/
}
A.q->front=q->rear;
B.q=q->next;
C.q->rear=q->front;
D.p=p->next;
2.在下面空格處填寫適當(dāng)?shù)恼Z句,以使下面的循環(huán)隊(duì)列的入隊(duì)和出隊(duì)算法完整
defineMAXSIZE100;
typedefcharElemtype;
typedefstruct
(
Elemtypequeue[MAXSIZE];
intfront,rear;
Jsequeuetype;
SequeuetypeQ;
第16頁共64頁
intencqueue(sequeuetype*Q,elemtypex)
if((Q->rear?l)%MAXSIZE==Q->front)
{
printf("隊(duì)列已滿!\n〃);
return1;
)
else
(
Q->rear=(Q->rear+l)%MAXSIZE;
(1)
return0;
)
}/*入隊(duì)算法*/
Elemtypedel_cqueue(sequeuetype*Q)
{
if((2))
(
printf(〃隊(duì)列為空!\n〃);
return1;
)
else
(
Q->front=(Q->front+l)%MAXSIZE;
return(Q->queue[Q->front]);
)
}/*出隊(duì)算法*/
A.(1)(Q->rear+l)%MAXSIZE==Q->front(2)Q->front=(Q->front+l)%MAXSIZE;
B.(1)(Q->front+l)%MAXSIZE==Q->rear(2)Q->rear=(Q->rear+l)%MAXSIZE;
C.(1)Q->front==Q->rear(2)Q->queue[Q->rear]=x;
第17頁共64頁
D.(1)Q->queue[Q->rear]=x;(2)Q->front==Q->rear
3.寫出下列程序執(zhí)行后的結(jié)果
SeqQueueQ;
InitQueue(Q);
inta[4]={5,8/12,15);
for(inti=0;i<4;i++)lnQueue(Q,a[i]);
lnQueue(Q,OutQueue(Q));
;
lnQueue(Q,30)
lnQueue(QyOutQueue(Q)+10);
while(!QueueEmpty(Q))printf(zz%d〃,OutQueue(Q));
執(zhí)行后的輸出結(jié)果為:.
A.58121530
B.121553018
C.812153018
D.121551830
4.寫出下列程序執(zhí)行后的結(jié)果
SeqStackS;
InitStack(S);
Push(S,3);
Push(S,4);
Push(S,5);
intx=Pop(S)+2*Pop(S);
Push(Szx);
inti,a[4]={5,8/12/15};
for(i=0;i<4;i++)Push(S,a[i]);
while(!StackEmpty(S))Printf("%d7Pop⑸);
執(zhí)行后的輸出結(jié)果為:0
A.151285133
第18頁共64頁
B.358121315
C.151312853
D.151213385
5.在下面空格處填寫一條語句,以使下面的進(jìn)棧算法完整。
voidPush(structSeqStack*s,ElemTypex)
{
If(s->top==MaxSize-l){
printf("棧滿溢出錯誤!\n〃);
exit(l);
)
s->data[s->top]=x;
)
A.s->top=s->data;
B.s->data++;
C.s->top++;
D.s->data=s->top;
6.在下面空格處填寫一條語句,以使下面的出棧算法完整。
ElemTypePop(structSeqStack*s,ElemTypex)
{
If(StackEmpty(s)){
prinlf("棧下溢出錯誤!\n〃);
exit(l);
}
x=s->data[s->top];
returnx;
)
第19頁共64頁
A.s->top-;
B.s->data-;
C.s->top=s->data;
D.s->data=s->top;
第20頁共64頁
第四章字符串
一、選擇題
1.以下陳述中正確的是()o
A.串是一種特殊的線性表B.串的長度必須大于零
C.串中元素只能是字母D.空串就是空白串
2.設(shè)有兩個串p和q,其中q是p的子串,q在p中首次出現(xiàn)的位置的算法稱
為()0
A.求子串B.連接
C.匹配D.求串長
3.串是()o
A.不少于一個字母的序列B.任意個字母的序列
C.不少于一個字符的序列D.有限個字符的序列
4.串的長度是指()。
A.串中所含不同字母的個數(shù)B.串中所含字符的個數(shù)
C.串中所含不同字符的個數(shù)D.串中所含非空格字符的個數(shù)
5.若串S=="English”,其子串的個數(shù)是()o+++
A.9B.16C.36D.28
6.下面關(guān)于串的敘述中,不正確的是()o
A.串是字符的TT限序列
B.空串是由空格構(gòu)成的串
C.模式匹配是串的一種重要運(yùn)算
D.串即可以采用順序存儲,也可以采用鏈?zhǔn)酱鎯?/p>
7.串與普通的線性表相比較,它的特殊性體現(xiàn)在(
A.順序的存儲結(jié)構(gòu)B.鏈接的存儲結(jié)構(gòu)
C.數(shù)據(jù)元素是一個字符D.數(shù)據(jù)元素可以任意
8.空串與空格串()oB
A.相同B.不相同C.可能相同D.無法確定
9.兩個字符串相等的條件是()。
第21頁共64頁
A.兩串的長度相等
B.兩串包含的字符相同
C.兩串的長度相等,并且兩串包含的字符相同
D.兩串的長度相等,并且對應(yīng)位置上的字符相同
10.串函數(shù)Strcat(a,b)的功能是進(jìn)行串()。
A.比較B.復(fù)制C.賦值D.連接
11.串函數(shù)StrCmp(“ABCd”,“ABCD”)的值為()。
A.0B.-1C.1D.3
12.設(shè)主串為“FABcCDABcdEFaBc",以下模式串能與主串成功匹配的是()。
A.EFaBcB.ABCdE
C.DABCCD.FAbcC
以下四個串中最小的是(r
A.〃ABADF〃B.〃ABAFD〃
C.〃ABADFA〃D.〃ABAF〃
14.在實(shí)際應(yīng)用中,要輸入多個字符串,且長度無法預(yù)定。則應(yīng)該采用()
存儲比較合適。
A.鏈?zhǔn)紹.順序C.堆結(jié)構(gòu)D.無法確定
二、判斷題
1.用字符數(shù)組存儲長度為n的字符串,數(shù)組長度至少為n+1。()
2.串是一種特殊的線性表,其特殊性表現(xiàn)在組成串的數(shù)據(jù)元素都是字符。()
3.串的兩種最基本的存儲方式是順序和鏈接。()
4.空串的長度是1。()
5.一個空格的串的長度是0。()
6.兩個串相等的充分必要條件是每一個對應(yīng)位置的字符相同。()
7.字符串a(chǎn)l:"heijing",a2=''hen〃,a3="heifang",a4="heni〃最小的是
a2o()
8.串函數(shù)StrCmp(“ABCd”,“ABCD”)的值為()
三、程序選擇題
第22頁共64頁
1.一下程序段的結(jié)果是:C的值為()
char*a[5]={“12378〃,“1237〃,“1236789〃,〃1237〃,“123708〃}
inti,c=0
for(i=0;i<5;i++)
if(strcmp(a[i]/1237w)==0)C++;
A.2B.5C.OD.1237
2.以下程序段的結(jié)果是:c的值為()+++
chara[5]=w1236789w;
int*p=a,c=O;
While(*p++)C++;
A.8B.7C.10D.12
第23頁共64頁
第五章數(shù)組和廣義表
一、選擇題
1.一維數(shù)組A采用順序存儲結(jié)構(gòu),每個元素占用6個字節(jié),第6個元素的存儲
地址為100,則該數(shù)組的首地址是()。+++
A.64B.28
C.70D.90
2.稀疏矩陣采用壓縮存儲的目的主要是()o
A.表達(dá)變得簡單B.對矩陣元素的存取變得簡單
C.去掉矩陣中的多余元素D.減少不必要的存儲空間的開銷
一個非空廣義表的表頭()
3.o
A.不可能是原子B.只能是子表
C.只能是原子D.可以是子表或原子
4.常對數(shù)組進(jìn)行的兩種基本操作是()o
A.建立與刪除B.索引與修改
C.查找和修改D.查找與索引
5.設(shè)二維數(shù)組A⑸⑹按行優(yōu)先順序存儲在內(nèi)存中,已知A⑼⑼起始地址為1000,
每個數(shù)組元素占用5個存儲單元,則元素A[4]⑷的地址為()o
A.1140B.1145C.1120D.1125
6.設(shè)有一個20階的對稱矩陣A,采用壓縮存儲的方式,將其下三角部分以行序
為主序存儲到一維數(shù)組B中(數(shù)組下標(biāo)從1開始),則矩陣中元素a9,2在一維數(shù)
組中的下標(biāo)是()
B0
A.41B.32C.18D.38
廣義表的(深度是(
7.d,(d,d,b),hz(e,((iJ),k))))o
A.6B.10
C.8D.4
8.廣義表(f,h,(a,b,d,c),d,e,((i,j),k))的長度是)o
A.6B.10
C.8D.4
第24頁共64頁
9.設(shè)有一個廣義表A⑶,其表尾為()o
A.aB.(())C.()D.(a)
10.下列廣義表中的線性表是()。
A.E(a,(b,c))B.E(a,E)C.E(a,b)D.E(azL())
二、判斷題
1.使用三元組表示稀疏矩陣中的非零元素能節(jié)省存儲空間。()
2.一個廣義表的表頭總是一個廣義表。()
3.一個廣義表的表尾總是一個表。()
一個廣義表(的長度為深度為
4.(a),((b),c),(((d))))3,4O()
.一個廣義表的表尾是
5((a),((b),c),(((d))))((b),c),(((d)))o()
6.需要壓縮存儲的矩陣可分為特殊矩陣矩陣和稀疏矩陣矩陣兩種.()
7.設(shè)廣義表L二((),()),則其表頭是(())。()
8.設(shè)廣義表L=((),()),則其表尾是()。()
9.設(shè)廣義表L=((),()),則其長度是0。()
10.廣義表A((a,b,c),(d,e,f))的表尾為((d,e,f?()
11.對稀疏矩陣進(jìn)行壓縮存儲,矩陣中每個非零元素對應(yīng)的三元組包括該元素的
行號、列號和元素值三項(xiàng)信息。()
12.設(shè)有n階對稱矩陣A,用一維數(shù)組s壓縮存儲A的下三角元素,s的下標(biāo)從
零開始,元素s[26]相應(yīng)于A中的元素為a7,6。()
第25頁共64頁
第六章樹和二叉樹
一、選擇題
1.樹最適合用來表示()。
A.有序數(shù)據(jù)元素B.無序數(shù)據(jù)元素
C.元素之間具有分支層次關(guān)系的數(shù)據(jù)D.元素之間無聯(lián)系的數(shù)據(jù)
2.樹中所有結(jié)點(diǎn)的度等于所有結(jié)點(diǎn)數(shù)加()。
A.1B.0C.2D.-1
對于一個滿二叉樹,個樹葉,個結(jié)點(diǎn),深度為則()
3.mnh,0
A.n=h+mB.h+m=2nC.m=h-1D.n=2h-1
5.深度為5的二叉樹至多有()個結(jié)點(diǎn)。
A.16B.32C.31D.10
6.假定一棵二叉樹中,雙分支結(jié)點(diǎn)數(shù)為15,單分支結(jié)點(diǎn)數(shù)為30,則葉子結(jié)點(diǎn)數(shù)
為()o
A.15B.16C.17D.47
7.二叉樹第k層上最多有()個結(jié)點(diǎn)。
A.2kB.2k-lC.2k-lD.2k-l
8.在一棵度具有5層的滿二叉樹中結(jié)點(diǎn)總數(shù)為()o
A.31B.32C.33D.16
9.在一棵二叉樹上,第5層的結(jié)點(diǎn)數(shù)最多為()o
A.8B.15C.16D.32
10.具有127個結(jié)點(diǎn)的完全二又樹其深度為()0
A.8B.7C.6D.5
11.設(shè)一棵二叉樹中沒有度為1的結(jié)點(diǎn),已知葉子結(jié)點(diǎn)數(shù)為n,此樹的結(jié)點(diǎn)數(shù)為
(
第26頁共64頁
A.2n+2B.2n+lC.2nD.2n-l
12.設(shè)二叉樹中有n2個度為2的結(jié)點(diǎn),nl個度為1的結(jié)點(diǎn),nO個葉子結(jié)點(diǎn),則
此二叉樹中空指針域個數(shù)為()o
A.n0+nl+n2B.n2+nl+2nOC.2n2+nlD.2n0+nl
13.n個結(jié)點(diǎn)的二叉樹中,用二叉鏈表做存儲,非空指針數(shù)目為()o
A.nB.2nC.n-1D.n+1
14.在一棵二叉樹的二叉鏈表中,空指針域數(shù)等于非空指針域數(shù)加()0
A.0B.1C.2D.-1
15.在一非空二叉樹的中序遍歷序列中,根結(jié)點(diǎn)的右邊()o
A.只有右子樹上的所有結(jié)點(diǎn)B.只有右子樹上的部分結(jié)點(diǎn)
C.只有左子樹上的所有結(jié)點(diǎn)D.只有左子樹上的部分結(jié)點(diǎn)
16.如圖所示二叉樹的中序遍歷序列是(
A.abdgcefhB.dgbaechfC.gdbehfcaD.abcdefgh
17.設(shè)n、m為一棵二叉樹上的兩個結(jié)點(diǎn),中序遍歷時n在m前的條件是()。
A.n在m右方B.n是m祖先C.n在m左方D.n是m子孫
18.某二叉樹的先序遍歷序列和后序遍歷序列正好相反,則該二叉樹一定()o
A.空或只有一個結(jié)點(diǎn)B.完全二叉樹
C.二叉排序樹D.深度等于其結(jié)點(diǎn)數(shù)
19.二叉樹的先序遍歷和中序遍歷如下:
先序遍歷:EFHIGJK
中序遍歷:HFIEJKG
該二叉樹根的右子樹的根是()。
A.EB.FC.GD.H
20.如果將給定的一組數(shù)據(jù)作為葉子數(shù)值,所構(gòu)造出的二叉樹的帶權(quán)路徑長度最
小,則該樹稱為()o
A.哈夫曼樹B.平衡二叉樹C.二叉樹D.完全二叉樹
第27頁共64頁
21.利用n個值作為葉結(jié)點(diǎn)的權(quán)生成的哈夫曼樹中共包含有()個結(jié)點(diǎn)。
A.nB.n+1C.2*nD.2*n-l
22.利用2、4、5、10這四個值作為葉子結(jié)點(diǎn)的權(quán),生成一棵哈夫曼樹,該樹中
所有葉子的最長帶權(quán)路徑長度為()o
A.18B.16C.38D.30
.哈夫曼樹是()
23o
A.滿二叉樹B.二叉排序樹
C.樹的路徑長度最短的二叉樹D.帶權(quán)路徑長度最短的二叉樹
.用權(quán)值分別為的四個結(jié)點(diǎn),構(gòu)造出的哈夫曼樹為()
2415,2,4,5D0
A.2n-lB.2nC.2n+lD.不確定
二、判斷題
1.樹是一種線性結(jié)構(gòu)。()
2.樹最適合表示元素之間具有層次關(guān)系的數(shù)據(jù)。()
3.如果結(jié)點(diǎn)A有3個兄弟,而且B是A的雙親,則B的度是4。()
4.樹中全部結(jié)點(diǎn)的度均大于0。()
5.森林是m(m2。)棵互不相交的樹的集合。()
6.深度為k的完全二叉樹至少有2k-l個結(jié)點(diǎn)。()
7.完全二叉樹中沒有度為1的結(jié)點(diǎn)。()
第28頁共64頁
8.若樹的度為2時,該數(shù)為二叉樹。()
9.具有三個結(jié)點(diǎn)的二叉樹有五種。()
10.深度為5的二叉樹最多有3層。()
11.具有256個結(jié)點(diǎn)的完全二叉樹的深度為9o()
12.具有100個結(jié)點(diǎn)的完全二叉樹有50個葉子。()
13.在二叉樹的鏈接存儲中,每個結(jié)點(diǎn)設(shè)置三個域:值域、左指針域和右指針域。
()
14.二叉樹只能采用二叉鏈表來存儲。()
15.具有n個結(jié)點(diǎn)的二叉樹,采用二叉鏈表存儲,共有n+1個空鏈域。()
16.二叉樹的前序遍歷序列中,任意一個結(jié)點(diǎn)均處在其子女結(jié)點(diǎn)的前面。()
17.已知一棵樹的先序序列和后序序列,一定能陶造出該樹。()
18.二叉樹的遍歷就是按照一定次序訪問樹中所有結(jié)點(diǎn),并且每個結(jié)點(diǎn)的值僅被
訪問一次的過程。()
19.哈夫曼樹一定是完全二叉樹
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度文化傳媒內(nèi)容制作合同
- 2024年大型活動保障車輛租賃合同
- 2024年上海房屋裝修工程分包合同
- 2024年廉潔承諾函:雙方誠信自律協(xié)議
- 教育工作者主要先進(jìn)事跡(5篇)
- 中學(xué)生讀書演講稿
- 2024年度質(zhì)量控制合同:MLB棒球帽正品知識分享
- 2024年工程監(jiān)測與檢測合同
- 2024室內(nèi)外演唱會舞臺安全檢測合同
- 2024年國際商貿(mào)合同的科學(xué)與藝術(shù)
- 職工宿舍安全培訓(xùn)
- 華南理工大學(xué)《微積分Ⅰ(二)》2021-2022學(xué)年第一學(xué)期期末試卷
- 2024-2030年配電自動化行業(yè)市場發(fā)展現(xiàn)狀分析及競爭格局與投資價值研究報告
- 山東省青島市李滄區(qū)2024-2025學(xué)年上學(xué)期八年級 期中英語試卷
- 工程項(xiàng)目承攬建設(shè)股權(quán)合作協(xié)議(居間協(xié)議)
- 2024年四川省綿陽市中考數(shù)學(xué)試題(無答案)
- 1.1公有制為主體+多種所有制經(jīng)濟(jì)共同發(fā)展課件-高中政治統(tǒng)編版必修二經(jīng)濟(jì)與社會
- 2024年中國空氣凈化節(jié)能燈市場調(diào)查研究報告
- 2024-2025學(xué)年人教版物理九年級上學(xué)期期中測試物理模擬試卷
- (工作計劃)非物質(zhì)文化遺產(chǎn)保護(hù)方案
- 下肢深靜脈血栓的預(yù)防和護(hù)理新進(jìn)展
評論
0/150
提交評論