版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
東華理工大學(xué)2022—2022學(xué)年第一學(xué)期考試摹
擬試卷A
一、填空題(50分)
1、數(shù)據(jù)結(jié)構(gòu)是一門(mén)研究非數(shù)值計(jì)算的程序設(shè)計(jì)問(wèn)題中的重?fù)?jù)元盍_以及它們之間關(guān)系和
運(yùn)算等的科學(xué)。(2分)
2、數(shù)據(jù)結(jié)構(gòu)的類型通常分為:集合、線性結(jié)構(gòu)、樹(shù)形結(jié)構(gòu)、圖狀結(jié)構(gòu)或者網(wǎng)狀結(jié)構(gòu):
從邏輯上可以把它們分成:線性結(jié)構(gòu)和非線性結(jié)構(gòu)。
3、數(shù)據(jù)的邏輯結(jié)構(gòu)只抽象反映數(shù)據(jù)元素的邏輯關(guān)系;數(shù)據(jù)的存儲(chǔ)(物理)
結(jié)構(gòu)是數(shù)據(jù)的邏輯結(jié)構(gòu)在計(jì)算機(jī)存儲(chǔ)器中的實(shí)現(xiàn)。
4、算法分析的目的是分析算法的效率以求改進(jìn),算法分析的兩個(gè)主要方面是空I巫
復(fù)雜度和時(shí)間復(fù)雜度?
A
5、計(jì)算機(jī)算法是解決問(wèn)題的有限運(yùn)算序列,它必須具備輸入、輸出、確定性、有窮性
和穩(wěn)定性等5個(gè)方面的特性。
6、線性結(jié)構(gòu)中元素之間的關(guān)系存在?對(duì)一關(guān)系,樹(shù)形結(jié)構(gòu)中元素之間的關(guān)系存在;
對(duì)多關(guān)系,圖形結(jié)構(gòu)中元素之間的關(guān)系存在多對(duì)多關(guān)系。
7、試寫(xiě)出以下算法的時(shí)間復(fù)雜度
i=s=0
while(s<n){
i++;
s+=i;
I
。而
7、試寫(xiě)出以下算法的時(shí)間復(fù)雜度
i=1
while(i<=n)
i=i*2
O(log2n)
8、抽象數(shù)據(jù)類型的定義由三元組來(lái)定義:(D,S,P)其中,D是數(shù)據(jù)對(duì)象,S是D上的
關(guān)系集,P是對(duì)D的基本操作集。
9、寫(xiě)出抽象數(shù)據(jù)類型線性表的定義
ADTList{
數(shù)據(jù)對(duì)象:D={ai|aiElemset,i=l,2,...,n,n0}
數(shù)據(jù)關(guān)系:R={<ai-1,ai>|ai-1,aiD,i=2,...,n}
基本操作:
InitList(&L)〃構(gòu)造一個(gè)空的線性表L
DestroyList(&L)〃消毀線性表L
ListLength(L)//返回L中數(shù)據(jù)元素的個(gè)數(shù)
ListInsert(&L,i,e)//1<i<ListLength(L)+l,在L中第i個(gè)位置之前插入數(shù)據(jù)元素e,L長(zhǎng)度
加1
ListDelete(&L,i,&e)//1<i<ListLength(L)刪除L中的第i個(gè)元素,并用e返回
ListTraverse(L,visit())//挨次對(duì)L的每一個(gè)元素調(diào)用函數(shù)visit()
}ADTList
10、指出線性表順序存儲(chǔ)、鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)的優(yōu)缺點(diǎn)。
答:順序存儲(chǔ)優(yōu)點(diǎn):邏輯上相鄰,物理位置也相鄰,可以隨機(jī)存取表中任一元素:缺點(diǎn):插
入和刪除元素時(shí)需要挪移大量元素。
鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)優(yōu)點(diǎn):插入、刪除元素時(shí)不需要挪移元素;缺點(diǎn):邏輯上相鄰,物理位置
不一定相鄰,不能隨機(jī)存取表中元素,需要挨次查找,求線性表的長(zhǎng)度時(shí)不如順序存儲(chǔ)結(jié)構(gòu)
方便,需要逐個(gè)結(jié)點(diǎn)搜索計(jì)算,或者設(shè)置帶頭結(jié)點(diǎn)的線性鏈表。
11、完成下列在單鏈表中刪除元素算法
StatusListDelete_L(LinkLisl&L,inti,ElemType&e){〃刪除第i個(gè)元素e
p=L;j=0;〃p指向頭結(jié)點(diǎn)
while(p->next&&j<i-l)(
p=p->next;++j
}//尋覓第i個(gè)結(jié)點(diǎn),并令P指向其前驅(qū)
if(!(p->next)||j>i-l)returnERROR;〃刪除位置不正確
q=p->next;p->next=q->next;〃刪除與釋放結(jié)點(diǎn)e=q-
>data;
free(q);
returnOK;
)
12、在一個(gè)長(zhǎng)度為n的線性鏈表中第i個(gè)元素(1in)之前插入一個(gè)元素時(shí),需向后挪移n?i+l
個(gè)元素。
13、在一個(gè)長(zhǎng)度為n的線性鏈表中刪除第i個(gè)元素(1in)時(shí),需向前挪移n-i個(gè)元素。
14、在一個(gè)單鏈表中p所指結(jié)點(diǎn)之后插入一個(gè)s所指結(jié)點(diǎn)時(shí),應(yīng)執(zhí)行s->next=p->next和
p->next=s的操作。
15、在單鏈表中,插入或者刪除一個(gè)結(jié)點(diǎn)元素時(shí),僅需要修改指針而不需要挪移元素。
16、棧(Stack)是限定僅在表尾進(jìn)行插入和刪除操作的線性表,
17、棧鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中刪除棧頂元素,并用e返回,完成下列算法
StatusPop(ListStack&S,SElemType&e){
if(S.top=NULL)returnERROR;〃棧無(wú)元素
p=S.top;
S.top=S.top->next;
e=p->data;
free(p);〃釋放節(jié)點(diǎn)批p
S.len—;
returnOK;
)
17、設(shè)有一隊(duì)列,(al,a2,…,an)則對(duì)頭元素是al隊(duì)尾元素是an。
18、假設(shè)隊(duì)列以帶頭結(jié)點(diǎn)的鏈?zhǔn)奖硎?,則刪除一不元素并返回給e的算法如下:
StatusDeQueue(LinkQueue&Q,QElemType&e){
if(Q.front==Q.rear)returnEEROR;
p=Q.front->next;//p為需要?jiǎng)h除的結(jié)點(diǎn)
e=p->data;
Q.front->next=p->next;
if(Q.rear==p)Q.rear=Q.front;〃隊(duì)列中惟獨(dú)一個(gè)元素被刪除時(shí),隊(duì)尾等于隊(duì)頭
free(p);
returnOK;
}
19、循環(huán)隊(duì)列中,假設(shè)少用一個(gè)元素,則插入元素到隊(duì)尾的算法
StatusEnQueue(SqQueue&Q,QElemTypee){
if((Q.rear+1)%MAXQSIZE==Q.front)returnERROR;〃隊(duì)滿
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%MAXQSIZE;//Q.rear前移
returnOK;
)
20、循環(huán)隊(duì)列中,假設(shè)少用一個(gè)元素,則/刪除隊(duì)頭元素并賦給e的算法如下
StatusDeQueue(SqQueue&Q,QElemType&e){
if(Q.front=Q.rear)returnERROR;〃隊(duì)空
e=Q.base[Q.Oont];
Q.front=(Q.front+1)%MAXQSIZE;//Q.rear前移
returnOK;
)
21、判定一個(gè)隊(duì)列QU(最多元素為MaxSize)為空的條件是:QU->front==QU->rear;為
滿隊(duì)列的條件是:QU->rear-QU->front==MaxSize。
22、SUABCDEFG's2=TQRST\假設(shè)con(x,y)為連接兩字符串函數(shù),subs(s,i,j)返回串s
中從第i個(gè)位置起的j個(gè)字符,len(s)返回串s的長(zhǎng)度,則
con(subs(sl,2,len(s2)),subs(s1,len(s2),2))的結(jié)果串為:BCDEFEF
23、什么是稀疏矩陣?如何衡量?舉例采用三元子順序表示已稀疏矩陣。
答:當(dāng)矩陣中的非零元素比較少,且分布沒(méi)有一定的規(guī)律,稱為稀疏矩陣。稀疏矩陣的衡量
標(biāo)準(zhǔn),可以用稀疏因子表示,通常認(rèn)為當(dāng)W0.05是稱為稀疏矩陣
t
mn
24、深度為5的二叉樹(shù)最多有31個(gè)結(jié)點(diǎn)。
25、深度為k的徹底二叉樹(shù)至少有2k-l個(gè)結(jié)點(diǎn),至多有2k-l個(gè)結(jié)點(diǎn),若自上而下,從
左到右次序給結(jié)點(diǎn)編號(hào)(從1開(kāi)始),則編號(hào)最小的葉結(jié)點(diǎn)的編號(hào)是2k-1。
26、己知一棵二叉樹(shù)的中序遍歷序列為cbedahgijf,后序遍歷序列為cedbjigfa,畫(huà)出該二
叉樹(shù)。
二、設(shè)有下列一棵樹(shù),回答下列問(wèn)題:(15分)
1)該樹(shù)的根結(jié)點(diǎn)是A:
2)這棵樹(shù)的葉結(jié)點(diǎn)是G、E、F、I、J;
3)該樹(shù)的非終端結(jié)點(diǎn)是A、C、B、D、H;
4)D結(jié)點(diǎn)的度是1;
5)該樹(shù)的度是3;樹(shù)深度是4;
6)將該樹(shù)轉(zhuǎn)換成二叉樹(shù)。(5分)
7)假設(shè)對(duì)該樹(shù)進(jìn)行先根遍歷、后根遍歷,寫(xiě)出該樹(shù)的先根序列、后根系列。(5分)
先根序列:ACGDHIJBEF
后根系列:GCIJHDEFBA
2、數(shù)據(jù)邏輯結(jié)構(gòu)包括:線性結(jié)構(gòu)、樹(shù)形結(jié)構(gòu)和圖形結(jié)構(gòu)三種類型,樹(shù)形結(jié)構(gòu)和圖
形結(jié)構(gòu)合稱為非線性結(jié)構(gòu)。(4分)
3、下列程序段的時(shí)間復(fù)雜度是0(n)。(2分)
i=s=0;
while(s<n){
i++;
s+二i;
)
4^判斷一個(gè)循環(huán)隊(duì)列QU(最多元素為mO)為滿隊(duì)列的條件是QU->front==(QU->rear+1)%
mOo(2分)
5、帶頭結(jié)點(diǎn)的單鏈表head為空的判斷條件是head->next==NULL。(2分)
6、假設(shè)線性表采用單鏈表存儲(chǔ)結(jié)構(gòu),完成下列插入元素的算法(5分)
StatusListInsert_L(LinKLis&tL,inti,ElementTypee)
{/在帶頭結(jié)點(diǎn)的單鏈線性表L中第i個(gè)位置之前插入元素
P=L;j=0;
while(p&&j<i-1)p={p->next;++j}
if(!p||j>i-l)returnERRORs=(
LinkLismtaDloc(sizeof(LNode));s->data=
e;
s->next-p->next;一
p->next=s;returnOK
)
7、若x和y是兩個(gè)采用順序結(jié)構(gòu)存儲(chǔ)的串,編寫(xiě)并完成比較兩個(gè)串是否相等的函數(shù)。(6分)int
Issame(orderstring*x,orderstring*y)
(
inti=0;tag=1;
if(x->len!=y->len)retum(O);
else
(
while(ivx->len&&tag)
(
if(x->vec[i]!=y->vec[i]t)ag=0;
i++;
)
return(tag);
)
)
8、已知二維數(shù)組A[m][n]采用行序?yàn)橹鞣绞酱鎯?chǔ),每一個(gè)元素占k個(gè)存儲(chǔ)單元,并且第一個(gè)
元素的存儲(chǔ)地址是LOC(A[0]⑼),則用的地址是LOC(A⑼[0])+(n*i+j)*k。(2分)
10、下圖所示的4棵二叉樹(shù),是平衡二叉樹(shù)的樹(shù)是B、D。(4分)
11、深度為k的徹底二叉樹(shù)至少有2口個(gè)結(jié)點(diǎn),至多有27個(gè)結(jié)點(diǎn),若
從上而下,從左到右次序給結(jié)點(diǎn)編號(hào)(從1開(kāi)始),則編號(hào)最小的葉結(jié)點(diǎn)的編號(hào)是
)2+1。(3分).
12、有向徹底圖:具有n(n-l)條邊的有向圖稱為有向徹底圖。(2分)
13、對(duì)線性表進(jìn)行折半查找時(shí),要求線性表必須以順序方式存儲(chǔ),且結(jié)點(diǎn)按關(guān)鍵字有序排
列°(4分)
14、一組記錄的排序碼為(17,48,2435,69,8223,79,3)6,,其72中含有5個(gè)長(zhǎng)度為2的有序表,按歸并
排序的方法對(duì)該序列進(jìn)行一趟歸并排序后的結(jié)果為:
17,24,35,48,23,69,79,82,36,72。(6)
15、己知系列{503,87,512,61,908,170,897,275,653,462),以第一個(gè)記錄為樞
軸(基準(zhǔn)),寫(xiě)出采用快速排序法對(duì)該序列作升序排序時(shí)的第一趟的結(jié)果:(5分)[462,87,
275,61,170]503[89,7908,653,503]。
三、已直一棵二叉樹(shù)的中序遍歷系列為kbedohgijf,后序遍歷系列為kedbhjigfb,畫(huà)出該二叉
樹(shù)。(5分)
四、稀疏矩陣有什么特點(diǎn)?假設(shè)用三元組順序表來(lái)表示稀疏矩陣,試設(shè)計(jì)該方法的存儲(chǔ)結(jié)構(gòu)。
寫(xiě)出下列稀疏矩陣的三元組表示。(10分)
0020
3000
0015
0000
答:實(shí)際非零元素的個(gè)數(shù)遠(yuǎn)遠(yuǎn)小于矩陣元素的個(gè)數(shù)(0.05)。
三元組順序表示存儲(chǔ)結(jié)構(gòu)可設(shè)計(jì)如下:
#MAXSIZE12500;
typedefstruct{
intij;
Elemtypee;
JTriple;
typedefstruct{
Tripledata[MAXSIZE+1];
intmu,nu,tu;
JTSMatrix;
將下列樹(shù)轉(zhuǎn)換成二叉樹(shù)
①
已知有5個(gè)字符(4b,cd)e,它們浮現(xiàn)的權(quán)值分別是{12,4,5,2。,3}試構(gòu)建一
個(gè)赫夫曼樹(shù),并求它們的赫夫曼編碼。
a(0),b(100),c(101),d(110),e(lll)
徹底圖:對(duì)于有n頂點(diǎn)的無(wú)向圖,邊E的取值范圍是0?n(n-l)/,2當(dāng)n個(gè)
頂點(diǎn)的無(wú)向圖有n(n-l)/2條邊時(shí)稱為徹底圖
有向徹底圖:對(duì)于有n頂點(diǎn)的無(wú)向圖,邊E的取值范圍是0?n(n-l),當(dāng)n
個(gè)頂點(diǎn)的有向圖有n(n-l)條邊時(shí)稱為有向徹底圖采用鄰接表存
儲(chǔ)圖的深度優(yōu)先遍歷法算類似與二叉樹(shù)的先序遍歷,
而廣度優(yōu)先遍歷算法類似與二叉樹(shù)的層序遍歷。
已知一個(gè)有向圖用鄰接矩陣表示,則計(jì)算第i結(jié)點(diǎn)入度的方法是求
矩陣第i列非0元素之和。
圖的深度優(yōu)先搜索序列和廣度優(yōu)先搜索序列是不惟一的。
三、圖的存儲(chǔ)結(jié)構(gòu)有哪幾種?請(qǐng)用鄰接矩陣和鄰接表兩種存儲(chǔ)結(jié)構(gòu)表示下圖。(10分)
參考答案:
(1)圖的存儲(chǔ)結(jié)構(gòu)有有:數(shù)組表示法(鄰接矩陣)、鄰接表、十字鏈表和鄰接多重表四種表
示方法。(2分)
(2)鄰接矩陣儲(chǔ)結(jié)構(gòu)如下:(4分)
01000
10101
01011
00101
01110
(3)鄰接表存儲(chǔ)結(jié)構(gòu)如下:(4分)
五、用Dijstra方法求下圖中從V0點(diǎn)到各終點(diǎn)的最短路徑,并在表格中填寫(xiě)求
解過(guò)程。(12分)
參考答案:
(1)在表格中填寫(xiě)算過(guò)程(8分)
從V0點(diǎn)到各終點(diǎn)的D值和最短路徑的求解過(guò)程
線占
八、、
1=11=21=31=41=5
1
VI
(vO,vl)
2
V2
{v0,vl,v2}
553
V3
(v0,v3)(v0,v3)(v0,vl,v2,v3)
V4無(wú)
34
44
V5
(v0,v5)(v0,vl,v5)
(v0,vl,v5)(v0,vl,v5)
V1vz-
VJV3V5
IvOvl!IvOvlv?l
S{v0,vl,v2,v3,v5}
(2)闡述丫0到各點(diǎn)的路徑(4分)
vO到vl點(diǎn)的最短路徑為1,頂點(diǎn)為(vO,vl)
vO到v2點(diǎn)的最短路徑為2,頂點(diǎn)為(v0,vl,v2)
vO到v3點(diǎn)的最短路徑為3,頂點(diǎn)為(v0,vl,v2,v3)
vO到v4點(diǎn)之間無(wú)路徑
vO到v5點(diǎn)的最短路徑為4,頂點(diǎn)為(v0,vl,v5)
五、試找出下列有向無(wú)環(huán)網(wǎng)的關(guān)鍵路徑。(10分)
頂點(diǎn)veV1邊e11-e
VI00al099
V2413a2077
V3613
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 強(qiáng)夯合同范例
- 甲供動(dòng)力合同范例
- 事業(yè)部合伙合同范例
- 奮達(dá)物流合同范例
- 物流公司和客戶合同范例
- 天津?yàn)I海汽車(chē)工程職業(yè)學(xué)院《生態(tài)學(xué)科前沿進(jìn)展》2023-2024學(xué)年第一學(xué)期期末試卷
- 如家酒店裝修合同范例
- 園林造價(jià)合同范例
- 渣土車(chē)輛購(gòu)買(mǎi)合同范例
- 東方航空合同范例
- 安全生產(chǎn)培訓(xùn)課件
- 養(yǎng)老院安全巡查記錄制度
- 2024年國(guó)家工作人員學(xué)法用法考試題庫(kù)及參考答案
- 中國(guó)成人心肌炎臨床診斷與治療指南2024解讀
- 期末(試題)-2024-2025學(xué)年人教PEP版英語(yǔ)六年級(jí)上冊(cè)
- 創(chuàng)新創(chuàng)業(yè)創(chuàng)造:職場(chǎng)競(jìng)爭(zhēng)力密鑰智慧樹(shù)知到期末考試答案章節(jié)答案2024年上海對(duì)外經(jīng)貿(mào)大學(xué)
- 醫(yī)院檢驗(yàn)科實(shí)驗(yàn)室生物安全程序文件SOP
- 三創(chuàng)賽獲獎(jiǎng)-非遺文化創(chuàng)新創(chuàng)業(yè)計(jì)劃書(shū)
- 教你成為歌唱達(dá)人智慧樹(shù)知到期末考試答案2024年
- 河北省石家莊市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村居民村民委員會(huì)明細(xì)
- 送給蛤蟆的禮物PPT課件
評(píng)論
0/150
提交評(píng)論