2023年雲南省資料總結基礎

2021-12-21 04:52:48 字數 1266 閱讀 8309

1、根據二叉排序樹中序遍歷所得結點值為增序的性質,在遍歷中將當前遍歷結點與其前驅結點值比較,即可得出結論,為此設全域性指標變數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演算法結束

2、假設以i和o分別表示入棧和出棧操作。棧的初態和終態均為空,入棧和出棧的操作序列可表示為僅由i和o組成的序列,稱可以操作的序列為合法序列,否則稱為非法序列。(15分)

(1)a和d是合法序列,b和c 是非法序列。

(2)設被判定的操作序列已存入一維陣列a中。

int judge(char a)

判斷字元陣列a中的輸入輸出序列是否是合法序列。如是,返回true,否則返回false。

i++; //不論a[i]是『i』或『o』,指標i均後移。}

if(j!=k)

else

演算法結束。

3、本題要求建立有序的迴圈鍊錶。從頭到尾掃瞄陣列a,取出a[i](0<=ilinkedlist creat(elemtype a,int n)

//由含n個資料的陣列a生成迴圈鍊錶,要求鍊錶有序並且無值重複結點

//查詢a[i]的插入位置

if(p==h || p->data!=a[i重複資料不再輸入

}//for

return(h);

}演算法結束

4、有一種簡單的排序演算法,叫做計數排序(count sorting)。這種排序演算法對乙個待排序的表(用陣列表示)進行排序,並將排序結果存放到另乙個新的表中。必須注意的是,表中所有待排序的關鍵碼互不相同,計數排序演算法針對表中的每個記錄,掃瞄待排序的表一趟,統計表中有多少個記錄的關鍵碼比該記錄的關鍵碼小,假設針對某乙個記錄,統計出的計數值為c,那麼,這個記錄在新的有序表中的合適的存放位置即為c。

(1) (3分)給出適用於計數排序的資料表定義;

(2) (7分)使用pascal或c語言編寫實現計數排序的演算法;

(3) (4分)對於有n個記錄的表,關鍵碼比較次數是多少?

(4) (3分)與簡單選擇排序相比較,這種方法是否更好?為什麼?

2023年雲南省資料總結摘要

1 已知有向圖g v,e 其中v e 寫出g的拓撲排序的結果。g拓撲排序的結果是 v1 v2 v4 v3 v5 v6 v7 2 給定n個村莊之間的交通圖,若村莊i和j之間有道路,則將頂點i和j用邊連線,邊上的wij表示這條道路的長度,現在要從這n個村莊中選擇乙個村莊建一所醫院,問這所醫院應建在哪個村...

2023年雲南省資料總結入門

1 設有一組初始記錄關鍵字序列 k1,k2,kn 要求設計乙個演算法能夠在o n 的時間複雜度內將線性表劃分成兩部分,其中左半部分的每個關鍵字均小於ki,右半部分的每個關鍵字均大於等於ki。void quickpass int r,int s,int t r i x 2 對一般二叉樹,僅根據乙個先序...

2023年雲南省資料總結要領

1 設t是一棵滿二叉樹,編寫乙個將t的先序遍歷序列轉換為後序遍歷序列的遞迴演算法。2 兩棵空二叉樹或僅有根結點的二叉樹相似 對非空二叉樹,可判左右子樹是否相似,採用遞迴演算法。int similar bitree p,q 判斷二叉樹p和q是否相似 結束similar 3 設一棵樹t中邊的集合為,要求...