var low ,high ,i ,j, t:integer;
begin
low:=1; high:=n;
repeat
t:=a[low]; i:=low; j:=high;
repeat
while( ij:=j-1;
if ( ibegin
a[i]:=a[j];
i:=i+1;
end;
while (ii:=i+1;
if (ibegin
a[j]:=a[i];
j:=j-1
enduntil i=j;
a[i]:=t;
if1then
if ilow2)
else
high3)
until4
search-pascal:= a[k]
end;
2. 假設root是一棵給定的非空查詢樹,對於下面給出的子程式,當執行注釋中給出的呼叫語句時,就可以實現如下的操作:在非空查詢樹root中查詢值為k 的結點,同時置success為「真」;若值為k的結點不在樹中,或者雖然在樹中,但不是葉子結點,則不進行刪除,僅置success為「假」。應注意到非空查詢樹只包含乙個結點情況,此時樹中的唯一結點,也是葉子結點。
(8分)
程式(a)
#include <>
typedef struct node node;
node *root;
int k.,success;
viod del-lef(node **t, int k, int *sn)
/*call form :del-leaf( &root, k,&success);*/
程式(b)
const maxn=50;
type datatype = integer;
nodeptr =^nodetype;
nodetype = record
key: datatype;
left, right:nodeptr
end;
var root :nodeptr; k:integer; success:boolean;
procedure del-leaf (var t: nodeptr; k:integer; var sn :boolean);
var p,pf:nodeptr;
begin
p:=t; sn:=false;
while1and not sn do
if (k=p^.key) then sn:=true;
else begin
(2if (kp:=p^.left;
else
p:=p^.right ;
end;
if sn and (p^.left = nil) and (p^.right = nil) then
begin
if3then
if (pf^.left = p) then pf^.left :=nil
else4) ;
dispose(p);
enddlse sn := false
end;
(*call form:del-leaf (root,k,success);*)
3 約瑟夫問題敘述如下:有1至n編號的n個人按順時針方向圍坐一圈,每人持有乙個密碼(正整數),一開始以正整數m作為報數上限值,從第乙個人開始順時針方向自1開始順序報數,報到m時停止報數,報m的人出列,將他的密碼作為新的報數上限值,從他的順時針方向上的下乙個人開始重新報數,如此下去,至到所有的人全部出列為止,要求產生記錄出列順序的表。如每個人的密碼依次是:
3,1,7,2,4,8,的值為20,則列出順序為6,1,4,7,2,3,5。所有人用乙個迴圈單鏈表表示,表中每個結點代表乙個人,按出列次序依次將結點從迴圈單鏈表中刪除,並按順序存放乙個單鏈表中,鍊錶的每個結點包括三個字段:code代表密碼,no代表人的編號,。
(10分)
演算法(a)
演算法 (b)
4 二叉樹用二叉鍊錶表示,下面是前序遍歷二叉樹root的非遞迴演算法,p為當前結點s為輔助棧,s:stack[1..max] ofpointer,pointerb即為二叉鍊錶的結點型別。
(10分)
二請編寫完整的程式。(共32分)
1 請列印出不大於m(m為》=3的正整數)的所有史密斯數。史密斯數是指滿足下列條件的可分解的整數其所有數字上的數字和等於其全部素數因子之和。如9975=3*5*5*7*17,9+9+7+5=3+5+5+17=30。
(14分)
2 設有順序放置的n個桶,每個桶中裝有一粒礫石,每粒礫石的顏色是紅,白,藍之一。要求重新安排這些礫石,使的所有紅色礫石在前,所有白色礫石居中,所有藍色礫石居後,重新安排時對每粒礫石的顏色只能看一次並且只允許交換操作來調整礫石的位置(18分)
三請用流程圖或類高階語言(pascal或c)表示演算法。(共14分)
1 一棵二叉樹以二叉鍊錶來表示,求其指定的某一層k(k>1)上的葉自結點的個數。(18分)
2 寫演算法判別以鄰接方式儲存的無向圖中是否存在由頂點vi到頂點vj的路徑(i≠j)。(14分)
2019考研清華大學資料結構專業真題回憶版
1.長度分別為m 和n 的公升序鍊錶,若將它們合併為乙個長度為m n 的降序鍊錶,則最壞情況下的時間複雜度是 a.o n b.o m n c.o min m,n d.o max m,n 2.乙個棧的入棧序列為1,2,3,n 其出棧序列是 p1,p2,p3,pn。若p2 3,則p3 可能取值的個數是 ...
自考資料結構真題
絕密 考試結束前 全國2013年10月高等教育自學考試 資料結構試題 課程 02331 請考生按規定用筆將所有試題的答案塗 寫在答題紙上。選擇題部分 注意事項 1.答題前,考生務必將自己的考試課程名稱 姓名 准考證號用黑色字跡的簽字筆或鋼筆填寫在答題紙規定的位置上。2.每小題選出答案後,用2b鉛筆把...
考研《資料結構》考試大綱
3.掌握線索二叉樹的概念 儲存結構及線索化演算法。4.掌握樹和森林與二叉樹間的轉換,掌握樹和森林的遍歷演算法。5.掌握哈夫曼樹的概念 儲存結構和應用。第七章圖 1.理解圖的基本概念,掌握圖的鄰接矩陣和鄰接表的儲存結構。2.了解十字鍊錶,鄰接多重表等儲存結構。3.熟練掌握圖的深度優先和廣度優先遍歷演算...