![2023年研究生類研究生入學(xué)考試專業(yè)課計(jì)算機(jī)學(xué)科專業(yè)綜合基礎(chǔ)-數(shù)據(jù)結(jié)構(gòu)歷年高頻考題帶答案難題附詳解_第1頁](http://file4.renrendoc.com/view/f01807322bf97b21b9ce6e9e490e2c35/f01807322bf97b21b9ce6e9e490e2c351.gif)
![2023年研究生類研究生入學(xué)考試專業(yè)課計(jì)算機(jī)學(xué)科專業(yè)綜合基礎(chǔ)-數(shù)據(jù)結(jié)構(gòu)歷年高頻考題帶答案難題附詳解_第2頁](http://file4.renrendoc.com/view/f01807322bf97b21b9ce6e9e490e2c35/f01807322bf97b21b9ce6e9e490e2c352.gif)
![2023年研究生類研究生入學(xué)考試專業(yè)課計(jì)算機(jī)學(xué)科專業(yè)綜合基礎(chǔ)-數(shù)據(jù)結(jié)構(gòu)歷年高頻考題帶答案難題附詳解_第3頁](http://file4.renrendoc.com/view/f01807322bf97b21b9ce6e9e490e2c35/f01807322bf97b21b9ce6e9e490e2c353.gif)
![2023年研究生類研究生入學(xué)考試專業(yè)課計(jì)算機(jī)學(xué)科專業(yè)綜合基礎(chǔ)-數(shù)據(jù)結(jié)構(gòu)歷年高頻考題帶答案難題附詳解_第4頁](http://file4.renrendoc.com/view/f01807322bf97b21b9ce6e9e490e2c35/f01807322bf97b21b9ce6e9e490e2c354.gif)
![2023年研究生類研究生入學(xué)考試專業(yè)課計(jì)算機(jī)學(xué)科專業(yè)綜合基礎(chǔ)-數(shù)據(jù)結(jié)構(gòu)歷年高頻考題帶答案難題附詳解_第5頁](http://file4.renrendoc.com/view/f01807322bf97b21b9ce6e9e490e2c35/f01807322bf97b21b9ce6e9e490e2c355.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
2023年研究生類研究生入學(xué)考試專業(yè)課計(jì)算機(jī)學(xué)科專業(yè)綜合基礎(chǔ)-數(shù)據(jù)結(jié)構(gòu)歷年高頻考題帶答案難題附詳解(圖片大小可自由調(diào)整)第1卷一.歷年考點(diǎn)試題黑鉆版(共25題)1.以下算法是在一個(gè)有n個(gè)數(shù)據(jù)元素的數(shù)組A中刪除第i個(gè)位置的數(shù)組元素,要求當(dāng)刪除成功時(shí)數(shù)組元素個(gè)數(shù)減1,求平均刪除一個(gè)數(shù)組元素需要移動(dòng)的元素個(gè)數(shù)是多少?其中,數(shù)組下標(biāo)從0至n-1。
intdelete(intA[],intn,inti)
{
intj;
if(i<0||i>n)
return0;
for(j=i+1;j<n;++j)
A[j-1]=A[j];
--n;
return1;
}2.棧和隊(duì)列的主要區(qū)別在于______。A.它們的邏輯結(jié)構(gòu)不一樣B.它們的存儲(chǔ)結(jié)構(gòu)不一樣C.所包含的運(yùn)算不一樣D.插入和刪除運(yùn)算的限定不一樣3.以下有關(guān)平衡二叉樹的說法中正確的是______。A.平衡二叉樹是高度最小的二叉排序樹B.平衡二叉樹一定是豐滿樹C.平衡二叉樹上任一結(jié)點(diǎn)的平衡因子不能超過1D.有n個(gè)結(jié)點(diǎn)的平衡二叉樹的高度為O(log2n)4.編寫一個(gè)算法,將m(m≥2)個(gè)有序(從小到大)順序表合并成一個(gè)有序順序表,合并過程中不另設(shè)新的順序表存儲(chǔ)。5.下面函數(shù)的功能是實(shí)現(xiàn)分塊查找,空白處應(yīng)該添加的內(nèi)容是______。
intBlkSearch(int*nz,intkey,intblock,intBLK,intlen)
{
inti;
block=block-1;
if(len<=0)
{
puts("表為空!");
return0;
}
if(BLK>len)BLK=len;
for(i=block*BLK;i<(block+1)*BLK&&nz[i]!=0;i++)
{
if(______)
{
printf("找到第%d個(gè)數(shù)是%d\n",i,key);
return0;
}
}
printf("\n");
printf("查找結(jié)束\n");
return0;
}A.nz[i]==keyB.nz[i]==BLKC.nz[1i]==blockD.nz[i]==06.對(duì)一個(gè)圖進(jìn)行遍歷可以得到不同的遍歷序列,那么導(dǎo)致得到的遍歷序列不唯一的因素有哪些?7.設(shè)線性表中有2n個(gè)元素,以下操作中,在單鏈表上實(shí)現(xiàn)要比在順序表上實(shí)現(xiàn)效率更高的是______。A.刪除指定元素B.在最后一個(gè)元素的后面插入一個(gè)新元素C.順序輸出前k個(gè)元素D.交換第i個(gè)元素和第2n-i-1個(gè)元素的值(i=0,1,…,n-1)8.就平均性能而言,目前最好的排序算法是______。A.選擇排序B.快速排序C.冒泡排序D.插入排序9.二叉排序樹采用二叉鏈表存儲(chǔ)。寫一個(gè)算法,刪除結(jié)點(diǎn)值是X的結(jié)點(diǎn)。要求刪除該結(jié)點(diǎn)后,此樹仍然是一棵二叉排序樹,并且高度沒有增長(注意:可不考慮被刪除的結(jié)點(diǎn)是根的情況)。10.設(shè)圖有n個(gè)頂點(diǎn)和e條邊,在采用鄰接矩陣時(shí),遍歷圖的頂點(diǎn)所需時(shí)間為______;在采用鄰接表時(shí),遍歷圖的頂點(diǎn)所需時(shí)間為O(n+e)。A.O(n)B.O(n2)C.O(e)D.O(n×e)11.根據(jù)一個(gè)結(jié)點(diǎn)數(shù)據(jù)類型為整型的單鏈表生成兩個(gè)單鏈表,第一個(gè)單鏈表中包含原單鏈表中所有數(shù)據(jù)值為奇數(shù)的結(jié)點(diǎn),第二個(gè)單鏈表中包含原單鏈表中所有數(shù)據(jù)值為偶數(shù)的結(jié)點(diǎn),原有單鏈表保持不變。12.使用散列函數(shù):
H(k)=3kmod11
并采用開放地址法處理沖突,所求下一地址函數(shù)為
d1=H(k)
di=(di-1+((7kmod10)+1)%11(i=2,3,…)
試在0~10的散列地址空間中對(duì)關(guān)鍵字序列(22,41,53,46,30,13,01,67)構(gòu)造哈希表,求等概率情況下查找成功的平均查找長度,并設(shè)計(jì)構(gòu)造哈希表的完整的算法。13.棧在______中應(yīng)用。A.遞歸調(diào)用B.子程序調(diào)用C.表達(dá)式求值D.以上都是14.設(shè)某棵三叉樹中有40個(gè)結(jié)點(diǎn),則該三叉樹的最小高度為
。A.3B.4C.5D.615.敗者樹的外結(jié)點(diǎn)存放的是各歸并段當(dāng)前參加歸并的記錄,如下圖所示,外結(jié)點(diǎn)的編號(hào)0,1,2,…,m-1代表各歸并段的編號(hào),敗者樹的內(nèi)結(jié)點(diǎn)存放子女結(jié)點(diǎn)兩兩比較的敗者的歸并段編號(hào),內(nèi)結(jié)點(diǎn)編號(hào)也是0,1,…,m-1。編號(hào)為i的外結(jié)點(diǎn)的父結(jié)點(diǎn)的編號(hào)為______。
A.
B.
C.
D.16.關(guān)于B-樹,下列說法不正確的是______。A.B-樹是一種查找樹B.所有的葉結(jié)點(diǎn)具有相同的高度C.2-3樹中,所有非葉子結(jié)點(diǎn)有1或者3個(gè)孩子結(jié)點(diǎn)D.通常情況下,B-樹不是二叉樹17.已有鄰接表表示的有向圖,請(qǐng)編程判斷從第u頂點(diǎn)至第v頂點(diǎn)是否有簡單路徑,若有則打印出該路徑上的頂點(diǎn)。18.設(shè)計(jì)一個(gè)算法指出一個(gè)無序數(shù)序中的任意一個(gè)元素是第幾大元素(從小到大數(shù)),要求比較的次數(shù)最少。19.用n個(gè)權(quán)值構(gòu)造出來的Huffman樹的結(jié)點(diǎn)個(gè)數(shù)是______。A.2n-1B.2nC.2n+1D.n+120.采用順序結(jié)構(gòu)存儲(chǔ)串,編寫一個(gè)函數(shù)index(s1,s2),用于判定s2是否是s1的子串。若是子串,返回其在主串中的位置;否則返回-1。21.將下圖中的二叉樹按中序線索化,結(jié)點(diǎn)e的右指針和結(jié)點(diǎn)g的左指針分別指向______。
A.a,dB.b,cC.d,aD.c,a22.已知一個(gè)棧的進(jìn)棧序列為1,2,3,…,n,其輸出序列是p1,p2,p3,…,pn。若p1=3,則p2的值______。A.一定是2B.一定是1C.可能是1D.可能是223.執(zhí)行完下列語句段后,i值為______。
intf(intx){return((x>0)?x*f(x-1);2);}
i=f(f(1));A.2B.4C.8D.無限遞歸24.在下列有關(guān)關(guān)鍵路徑的說法中錯(cuò)誤的是______。A.在AOE網(wǎng)絡(luò)中可能存在多條關(guān)鍵路徑B.關(guān)鍵活動(dòng)不按期完成就會(huì)影響整個(gè)工程的完成時(shí)間C.任何一個(gè)關(guān)鍵活動(dòng)提前完成,那么整個(gè)工程將會(huì)提前完成D.所有的關(guān)鍵活動(dòng)都提前完成,那么整個(gè)工程將會(huì)提前完成25.自由樹(即無環(huán)連通圖)T=(V,E)的直徑是樹中所有點(diǎn)對(duì)點(diǎn)之間最短路徑長度的最大值,即T的直徑定義為d(u,v)的最大值(其中u,v∈V)。這里d(u,v)表示頂點(diǎn)u到頂點(diǎn)v的最短路徑長度(路徑長度為路徑中包含的邊數(shù))。如圖所示為一棵自由樹,其直徑為18。試寫算法求T的直徑,并分析算法的時(shí)間復(fù)雜度。
第1卷參考答案一.歷年考點(diǎn)試題黑鉆版1.參考答案:當(dāng)刪除最后一個(gè)元素時(shí),移動(dòng)的元素個(gè)數(shù)為0;當(dāng)刪除倒數(shù)第二個(gè)元素時(shí),移動(dòng)的元素個(gè)數(shù)為1;…;當(dāng)刪除第一個(gè)元素時(shí),移動(dòng)的元素個(gè)數(shù)為n-1。也就是說,當(dāng)刪除第i個(gè)元素時(shí),移動(dòng)的元素個(gè)數(shù)為n-i,設(shè)P為刪除第i個(gè)位置上數(shù)據(jù)元素的概率,則有Pi=1/n,平均刪除一個(gè)數(shù)組元素需要移動(dòng)的元素個(gè)數(shù)是
2.參考答案:D棧和隊(duì)列的邏輯結(jié)構(gòu)都是線性的,都有順序存儲(chǔ)和鏈?zhǔn)酱鎯?chǔ),有可能包含的運(yùn)算不一樣,但不是其主要區(qū)別。任何數(shù)據(jù)結(jié)構(gòu)在針對(duì)具體問題時(shí)所包含的運(yùn)算都可能不同。所以正確答案是D。3.參考答案:D[解析]有n個(gè)結(jié)點(diǎn)的平衡二叉樹的最小高度hmin=rlog2(n+1)l,最大高度hmax<1.44×log2(n+1),因此選項(xiàng)D是正確的。由于平衡二叉樹的中低層有可能沒有填滿,存在度為1的結(jié)點(diǎn),只要每個(gè)結(jié)點(diǎn)的兩棵子樹的高度差的絕對(duì)值不超過1即可,所以其高度有可能不是最小,因此選項(xiàng)A不對(duì)。豐滿樹即理想平衡樹,要求除最底層外其他層都是滿的,平衡二叉樹沒有這樣高的要求,因此選項(xiàng)B不對(duì)。對(duì)于C選項(xiàng),應(yīng)該是平衡二叉樹上任一結(jié)點(diǎn)的平衡因子的絕對(duì)值不能超過1。4.參考答案:將線性表A和B合并的過程如下:從A的最后一個(gè)元素和B的第一個(gè)元素開始分別向前、向后進(jìn)行比較,將較大的元素先定位在A中。
代碼如下:
intComb1(intA[],intna,intB[],intnb)
{
intn=na,m=0;
while(m<nb)
if(n==0||A[n-1]<B[m])
{
A[n+nb-m-1]=B[m];
//說明B[m]是第n+nb-m大的元素
++m;
}
else
{
A[n+nb-m-1]=A[n-1];
//說明A[n-1]是第n+nb-m大的元素
--n;
}
returnna+nb;
}5.參考答案:A如果當(dāng)前的值與所查找關(guān)鍵字相等,則完成查找。6.參考答案:此題考查的知識(shí)點(diǎn)是圖的遍歷。遍歷不唯一的因素有:開始遍歷的頂點(diǎn)不同;存儲(chǔ)結(jié)構(gòu)不同;在鄰接表情況下鄰接點(diǎn)的順序不同。7.參考答案:A對(duì)于A,刪除指定元素,在順序表中需要移動(dòng)較多元素,而在單鏈表上執(zhí)行同樣的操作不需要移動(dòng)元素,因此單鏈表的效率要高一些。
對(duì)于B,在最后一個(gè)元素的后面插入一個(gè)新元素不需要移動(dòng)元素,順序表的效率和單鏈表相同。
對(duì)于C,順序輸出前k個(gè)元素,單鏈表和順序表的效率幾乎相同。
對(duì)于D,交換第i個(gè)元素和第2n-i-1個(gè)元素的值(i=0,1,…,n-1),由于順序表可以實(shí)現(xiàn)隨機(jī)查找,因此順序表的效率會(huì)更高一些。8.參考答案:B[解析]目前,平均性能最好的排序是快速排序。9.參考答案:在二叉排序樹上刪除結(jié)點(diǎn),首先要查找該結(jié)點(diǎn)。查找成功后,若該結(jié)點(diǎn)無左子樹,則可直接將其右子樹的根結(jié)點(diǎn)接到其雙親結(jié)點(diǎn)上;若該結(jié)點(diǎn)有左子樹,則將其左子樹中按中序遍歷的最后一個(gè)結(jié)點(diǎn)代替該結(jié)點(diǎn),從而不增加樹的高度。
voidDelete(BSTreebst,keytypeX){
//在二叉排序樹bst上,刪除其關(guān)鍵字為X的結(jié)點(diǎn)
BSTreef,p=bst;
while(p&&p->key!=X)
//查找值為X的結(jié)點(diǎn)
if(p->key>X){f=p;p=p->lchild;}
else{f=p;p=p->rchild;}
if(p==null){printf("無關(guān)鍵字為X的結(jié)點(diǎn)\n");exit(0);}
if(p->lchild==null){
//被刪結(jié)點(diǎn)無左子樹
if(f->lchild==p)f->lchild=p->rchild;
//將被刪結(jié)點(diǎn)的右子樹接到其雙親上
elsef->rchild=p->rchild;
}
else{q=p;s=p->lchild;
//被刪結(jié)點(diǎn)有左子樹
while(s->rchild!=null)
//查左子樹中最右下的結(jié)點(diǎn)(中序最后結(jié)點(diǎn))
{q=s;s=s->rchild;}
p->key=s->key;
//結(jié)點(diǎn)值用其左子樹最右下的結(jié)點(diǎn)的值代替
if(q==p)p->lchild=s->lchild;
//被刪結(jié)點(diǎn)左子樹的根結(jié)點(diǎn)無右子女
elseq->rchild=s->lchild;
//s是被刪結(jié)點(diǎn)左子樹中序序列最后一個(gè)結(jié)點(diǎn)
free(s);
}
}10.參考答案:B[解析]存儲(chǔ)結(jié)構(gòu)為鄰接矩陣的圖的遍歷算法要對(duì)所有頂點(diǎn)都訪問一次,每次訪問時(shí)為確定下一次要訪問哪個(gè)頂點(diǎn),需遍歷該頂點(diǎn)的行向量,尋找該頂點(diǎn)的所有鄰接頂點(diǎn),所以遍歷的時(shí)間復(fù)雜度為O(n2)。而對(duì)于存儲(chǔ)結(jié)構(gòu)為鄰接表的圖的遍歷算法也要對(duì)所有頂點(diǎn)訪問一次,每次訪問時(shí)為確定下一次要訪問哪個(gè)頂點(diǎn),需遍歷該頂點(diǎn)的邊鏈表,所以時(shí)間復(fù)雜度為O(n+e)。11.參考答案:voidSeparate(LNode*&HL,LNode*&L1,LNode*&L2)
{
//將一個(gè)單鏈表HL按各個(gè)結(jié)點(diǎn)中數(shù)據(jù)的奇偶性拆分成兩個(gè)單鏈表L1和L2
LNode*r1,*r2,*p,*s;
r1=L1=(LNode*)malloc(sizeof(LNode));
r2=L2=(LNode*)malloc(sizeof(LNode));
p=HL→next;
//鏈表HL的掃描指針
while(p!=NULL)
//對(duì)原鏈表的結(jié)點(diǎn)逐個(gè)進(jìn)行檢測(cè)
{
s=(LNode*)malloc(sizeof(LNode));
//創(chuàng)建新結(jié)點(diǎn)
s→data=p→data;
if(p→data%2==1)
//奇數(shù)
{
r1→next=s;
r1=s;
}
else
//偶數(shù)
{
r2→next=s;
r2=s;
}
p=p→next;
}
r1→next=NULL;r2→next=NULL;
}12.參考答案:本題的哈希表構(gòu)造過程如下:
(1)H(22)=3*22mod11=0比較1次
(2)H(41)=3*41mod11=2比較1次
(3)H(53)=3*53mod11=5比較1次
(4)H(46)=3*46mod11=6比較1次
(5)H(30)=3*30mod11=2沖突
d1=H(30)=2
H(30)=(2+(7*30mod10)+1)mod11=3比較2次
(6)H(13)=3*13mod11=6沖突
d1=H(13)=6
H(13)=(6+(7*13mod10)+1)mod11=8比較2次
(7)H(1)=3*01mod11=3沖突
d1=H(1)=3
H(1)=(3+(1*7mod10)+1)mod11=0沖突
d2=H(1)=0
H(1)=(0+(1*7mod10)+1)mod11=8沖突
d3=H(1)=8
H(1)=(8+(1*7mod10)+1)mod11=5沖突
d4=H(1)=5
H(1)=(5+(1*7mod10)+1)mod11=2沖突
d5=H(1)=2
H(1)=(2+(1*7mod10)+1)mod11=10比較6次
(8)H(67)=3*67mod11=3沖突
d1=H(67)=3
H(67)=(3+(7*67mod10)+1)mod11=2沖突
d2=H(67)=2
H(67)=(2+(7*67mod10)+1)mod11=1比較3次
構(gòu)造本哈希表的程序代碼如下:
structhterm
{
intkey;
//關(guān)鍵字值
intsi;
//散列次數(shù)
};
structhtermhlist[M];
//假設(shè)M=11是已定義的常量
inti,adr,sum,d;
intx[N]={22,41,53,46,30,13,1,67};
//關(guān)鍵字賦值
//假設(shè)N=8是已定義的常量
floataverage;
voidchash()
//創(chuàng)建哈希表
{
for(i=0;i<M;++i)
//置初值
{
hlist[i].key=0;
hlist[i].si=0;
}
for(i=0;i<N;++i)
{
sum=0;
adr=(3*x[i])%M;
d=adr;
if(hlist[adr].key==0)
{
hlist[adr].key=x[i];
hlist[adr].si=1;
}
else
{
do
//處理沖突
{
d=(d+(x[i]*7)%10+1)%M;
sum=sum+1;
}while(hlist[d].key!=0);
hlist[d].key=x[i];
hlist[d].si=sum+1;
}
}
}13.參考答案:D[解析]棧的基本應(yīng)用有數(shù)制轉(zhuǎn)換(十轉(zhuǎn)N),括號(hào)匹配的檢驗(yàn),表達(dá)式求值,漢諾儀(Hanoi)塔;隊(duì)列的基本應(yīng)用是模擬事件發(fā)生的順序。14.參考答案:C由完全二叉樹原理可以知道,完全三叉樹如有n個(gè)葉結(jié)點(diǎn),則高度為
log3n+1。15.參考答案:C[解析]編號(hào)為i的外結(jié)點(diǎn)的父結(jié)點(diǎn)的編號(hào)為t=[(i+m)/2]。如下圖中外結(jié)點(diǎn)0的父結(jié)點(diǎn)為編號(hào)[(0+5)/2]=2的內(nèi)結(jié)點(diǎn),外結(jié)點(diǎn)4的父結(jié)點(diǎn)為[(4+5)/2]=4編號(hào)的內(nèi)結(jié)點(diǎn)。
16.參考答案:C[解析]B-樹定義如下:
一棵m階B-樹,或者是空樹,或者是滿足以下性質(zhì)的m叉樹:
(1)根結(jié)點(diǎn)或者是葉子結(jié)果,或者至少有兩棵子樹,至多有m棵子樹;
(2)除根結(jié)點(diǎn)外,所有非終端結(jié)點(diǎn)至少有1棵子樹,至多有m棵子樹;
(3)所有葉子結(jié)點(diǎn)都在樹的同一層上;
(4)每個(gè)結(jié)點(diǎn)應(yīng)包含如下信息:(n,A0,K1,A0,A1,A2,…,Kn,An)其中:
K(1≤i≤n)是關(guān)鍵字,且K<Ki+1(1≤i≤n-1)
Ai(i=0,1,…,n)為指向孩子結(jié)點(diǎn)的指針,且Ai-1所指向的子樹中所有結(jié)點(diǎn)的關(guān)鍵字都小于Ki,Ai所指向的子樹中所有結(jié)點(diǎn)的關(guān)鍵字都大于Ki;
n是結(jié)點(diǎn)中關(guān)鍵字的個(gè)數(shù),且-1≤n≤m-1,n+1為子樹的棵數(shù)。17.參考答案:
voidAllpath(AdjListg,vertypeu,vertypev){
//求有向圖g中頂點(diǎn)u到頂點(diǎn)v的所有簡單路徑,初始調(diào)用形式
inttop=0,s[];
s[++top]=u;visited[u]=1;
while(top>0||p){
p=g[s[top]].firstarc;
//第一個(gè)鄰接點(diǎn)
while(p!=null&&visited[p->adjvex]==1)p=p->next;
//下一個(gè)訪問鄰接點(diǎn)表
if(p==null)top--;
//退棧
else{
i=p->adjvex;
//取鄰接點(diǎn)(編號(hào))
if(i==v){
//找到從u到v的一條簡單路徑,輸出
for(k=1;k<=top;k++)printf("%3d",s[k]);
printf("%3d\n",v);
}//if
else{visited[i]=1;s[++top]=i;}
//else深度優(yōu)先遍歷
}//else
}//while
}18.參考答案:對(duì)于給定的數(shù)k,將所有小于它的元素排到其前面,所有大于它的元素排到其后面,該數(shù)的位置即為有序中的序號(hào)(從0開始數(shù)),這樣最大的比較次數(shù)為n-1次。
實(shí)現(xiàn)本題功能的程序如下:
intdatai(intr[],intn,intk)
{
inti=0,j=n-1;
inttemp;
while(i<=j)
{
while(i<n&&r[i]<=k)
++i;
while(j>=0&&r[j]>k)
--j;
if(i<j)
{
temp=r[i];r[i]=r[j];r[j]=temp;
++i;
--j;
}
}
returnj;
}19.參考答案:A[解析]用n個(gè)權(quán)值構(gòu)造出來的Huffman樹共有2n-1個(gè)結(jié)點(diǎn),其中葉結(jié)點(diǎn)n個(gè),度為2的非葉結(jié)點(diǎn)n-1個(gè)。20.參考答案:本題的算法思想是,設(shè)
s1="a1a2…am"
s2="b1b2…bn"
從s1中找與b1匹配的字符ai,若ai=b1,則判斷是否ai+1=b2,…,ai+1=bn,若都相等,則s2為s1子串;否則繼續(xù)比較ai之后的字符。
本題代碼如下:
intindex(Str*s1,Str*s2)
{
inti=0,j,k;
while(i<s1->length)
{
j=0;
if(s1->ch[i]==s2->ch[j])
{
k=i+1;++j;
while(k<s1->length&&j<s2->length&&s1->ch[k]==s2->ch[j])
{
++k;++j;
}
if(j==s2->length)
//s2終止時(shí)找到了子串
break;
else++i;
}
else++i;
}
if(i>=s1->length)
return-1;
else
returni+1;
}21.參考答案:D[解析]進(jìn)行中序線索化后得到下圖所示的結(jié)果。在這棵線索二叉樹中結(jié)點(diǎn)e的右指針是中序后繼線索,它指向結(jié)點(diǎn)c;結(jié)點(diǎn)g的左指針是中序前驅(qū)線索,它指向結(jié)點(diǎn)a。
22.參考答案:D[解析]元素3第一個(gè)出棧時(shí),元素1,2一定在棧內(nèi),下一個(gè)出棧的元素是2,不可能是1。當(dāng)然還可以是元素2暫時(shí)不出棧,元素4,5,…進(jìn)棧。23.參考答案:B此題考查的知識(shí)點(diǎn)是遞歸算法的分析。根據(jù)題意可計(jì)算f(0)=2,f(1)=2,f(2)=4,所以選B。24.參考答案:C[解析]在AOE網(wǎng)絡(luò)中可能存在多條關(guān)鍵路徑,因此,任何一個(gè)關(guān)鍵活動(dòng)提前完成,只影響到其中某一條關(guān)鍵路徑,整個(gè)工程不一定能提前完成。但如果AOE網(wǎng)絡(luò)中存在“橋”,即所有關(guān)鍵路徑都要通過的關(guān)鍵活動(dòng),它提前完成,整個(gè)工程可以提前。25.參考答案:利用深度優(yōu)先遍歷求出一個(gè)根結(jié)點(diǎn)v到每個(gè)葉子結(jié)點(diǎn)的距離,這是由diameter(v)函數(shù)實(shí)現(xiàn)的。該函數(shù)的時(shí)間復(fù)雜度為O(n+e),n為頂點(diǎn)個(gè)數(shù),e為邊數(shù)。然后,以每個(gè)頂點(diǎn)作為根結(jié)點(diǎn)調(diào)用diameter()函數(shù),其中最大值即為T的直徑,本算法的時(shí)間復(fù)雜度為O(n(n+e))。
實(shí)現(xiàn)本題功能的程序代碼如下:
voiddfs(intparent,intchild,int&len)
//函數(shù)執(zhí)行結(jié)束后,len中存放從根結(jié)點(diǎn)到child結(jié)點(diǎn)所在子樹的葉子結(jié)點(diǎn)的最大距離
//cost是帶權(quán)鄰接矩陣,visited是已經(jīng)初始化的訪問標(biāo)記數(shù)組
//N是已定義的常量,即頂點(diǎn)個(gè)數(shù)
{
intclen,v=0,maxlen;
clen=len;
maxlen=len;
while(v<N&&cost[child][v]==0)
//找與child相鄰的第一個(gè)頂點(diǎn)v
v++;
while(v<N)
//存在鄰接頂點(diǎn)時(shí)循環(huán)
{
if(v!=parent)
{
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國表面肌電測(cè)試系統(tǒng)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國一次鋰亞硫酰氯電池行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國動(dòng)態(tài)圖像粒度粒形分析系統(tǒng)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2023年全球及中國無人駕駛接駁小巴行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025小飯店員工的勞動(dòng)合同范本
- 出境旅游合同書
- 2025辦公室裝修合同書集錦
- 房產(chǎn)股權(quán)轉(zhuǎn)讓合同
- 存量房買賣合同合同范本
- 陸路貨物運(yùn)輸合同承運(yùn)人定義年
- 2023學(xué)年度第一學(xué)期高三英語備課組工作總結(jié)
- 臨建標(biāo)準(zhǔn)化圖集新版
- 安監(jiān)人員考核細(xì)則(2篇)
- 生活老師培訓(xùn)資料課件
- 2020年新概念英語第一冊(cè)lesson97-102單元檢測(cè)
- 腹主動(dòng)脈瘤(護(hù)理業(yè)務(wù)學(xué)習(xí))
- 注射用醋酸亮丙瑞林微球
- 大學(xué)生就業(yè)指導(dǎo)PPT(第2版)全套完整教學(xué)課件
- 家具安裝工培訓(xùn)教案優(yōu)質(zhì)資料
- 湖南大一型抽水蓄能電站施工及質(zhì)量創(chuàng)優(yōu)匯報(bào)
- envi二次開發(fā)素材包-idl培訓(xùn)
評(píng)論
0/150
提交評(píng)論