2023年福建省資料結構理論與實踐摘要

2022-10-01 21:15:03 字數 1544 閱讀 3342

1、已知有向圖g=(v,e),其中v=,e=

寫出g的拓撲排序的結果。

g拓撲排序的結果是:v1、v2、v4、v3、v5、v6、v7

2、設有一組初始記錄關鍵字為(45,80,48,40,22,78),要求構造一棵二叉排序樹並給出構造過程。

3、根據二叉排序樹中序遍歷所得結點值為增序的性質,在遍歷中將當前遍歷結點與其前驅結點值比較,即可得出結論,為此設全域性指標變數pre(初值為null)和全域性變數flag,初值為true。若非二叉排序樹,則置flag為false。

#define true 1

#define false 0

typedef struct node

*btree;

void judgebst(btree t,int flag)

// 判斷二叉樹是否是二叉排序樹,本演算法結束後,在呼叫程式中由flag得出結論。

//不是完全二叉樹

judgebst (t->rlink,flag);// 中序遍歷右子樹

}//judgebst演算法結束

4、二部圖(bipartite graph) g=(v,e)是乙個能將其結點集v分為兩不相交子集v 1和v2=v-v1的無向圖,使得:v1中的任何兩個結點在圖g中均不相鄰,v2中的任何結點在圖g中也均不相鄰。

(1).請各舉乙個結點個數為5的二部圖和非二部圖的例子。

(2).請用c或pascal編寫乙個函式bipartite判斷乙個連通無向圖g是否是二部圖,並分析程式的時間複雜度。設g用二維陣列a來表示,大小為n*n(n為結點個數)。請在程式中加必要的注釋。

若有必要可直接利用堆疊或佇列操作。【

5、若第n件物品能放入揹包,則問題變為能否再從n-1件物品中選出若干件放入揹包(這時揹包可放入物品的重量變為s-w[n])。若第n件物品不能放入揹包,則考慮從n-1件物品選若干件放入揹包(這時揹包可放入物品仍為s)。若最終s=0,則有一解;否則,若s<0或雖然s>0但物品數n<1,則無解。

(1)s-w[n],n-1 //knap(s-w[n],n-1)=true

(2)s,n-1knap←knap(s,n-1)

6、矩陣中元素按行和按列都已排序,要求查詢時間複雜度為o(m+n),因此不能採用常規的二層迴圈的查詢。可以先從右上角(i=a,j=d)元素與x比較,只有三種情況:一是a[i,j]>x, 這情況下向j 小的方向繼續查詢;二是a[i,j]void search(datatype a[ ][ ], int a,b,c,d, datatype x)

//n*m矩陣a,行下標從a到b,列下標從c到d,本演算法查詢x是否在矩陣a中.

else if (a[i][j]>x) j--; else i++;

if(flag) printf(「a[%d][%d]=%d」,i,j,x假定x為整型.

else printf(「矩陣a中無%d 元素」,x);

}演算法search結束。

[演算法討論]演算法中查詢x的路線從右上角開始,向下(當x>a[i,j])或向左(當x

2023年吉林省資料結構理論與實踐入門

1 在有向圖g中,如果r到g中的每個結點都有路徑可達,則稱結點r為g的根結點。編寫乙個演算法完成下列功能 1 建立有向圖g的鄰接表儲存結構 2 判斷有向圖g是否有根,若有,則列印出所有根結點的值。2 矩陣中元素按行和按列都已排序,要求查詢時間複雜度為o m n 因此不能採用常規的二層迴圈的查詢。可以...

2023年河南省資料結構理論與實踐摘要

1 設一棵樹t中邊的集合為,要求用孩子兄弟表示法 二叉鍊錶 表示出該樹的儲存結構並將該樹轉化成對應的二叉樹。2 二路插入排序是將待排關鍵字序列r 1.n 中關鍵字分二路分別按序插入到輔助向量d 1.n 前半部和後半部 注 向量d可視為迴圈表 其原則為,先將r l 賦給d 1 再從r 2 記錄開始分二...

2023年福建省資料總結摘要

while s next q next p s next q l next s linklist reverse 4 矩陣中元素按行和按列都已排序,要求查詢時間複雜度為o m n 因此不能採用常規的二層迴圈的查詢。可以先從右上角 i a,j d 元素與x比較,只有三種情況 一是a i,j x,這情況...