數據結構編程.pdf

上傳人:小** 文檔編號:16826225 上傳時間:2020-10-29 格式:PDF 頁數:21 大?。?30.90KB
收藏 版權申訴 舉報 下載
數據結構編程.pdf_第1頁
第1頁 / 共21頁
數據結構編程.pdf_第2頁
第2頁 / 共21頁
數據結構編程.pdf_第3頁
第3頁 / 共21頁

下載文檔到電腦,查找使用更方便

5 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《數據結構編程.pdf》由會員分享,可在線閱讀,更多相關《數據結構編程.pdf(21頁珍藏版)》請在裝配圖網上搜索。

1、二 叉 樹 的 相 關 操 作 # in clu d e # in clu d e# in clu d e /* mallo c()等 * / # in clu d e /* INT_ MAX等 * /# in clu d e /* EOF(=Z或 F6 ),NULL * / # in clu d e /* ato i() * /# in clu d e /* eo f() * / # in clu d e /* flo o r(),ceil(),ab s() * /# in clu d e /* ex it() * / /* 函 數 結 果 狀 態(tài) 代 碼 * /# d efin e TRU

2、E 1 # d efin e FALSE 0# d efin e OK 1 # d efin e ERROR 0# d efin e INFEASIBLE -1 /* # d efin e OVERFLOW -2 因 為 在 math .h 中 已 定 義 OVERFLOW的 值 為 3 ,故 去 掉 此 行 * / ty p ed ef in t Statu s; /* Statu s是 函 數 的 類 型 ,其 值 是 函 數 結 果 狀 態(tài) 代 碼 , 如OK等 * / ty p ed ef in t Bo o lean ; /* Bo o lean 是 布 爾 類 型 ,其 值 是 T

3、RUE或 FALSE * / ty p ed ef ch ar Telemty p e;ty p ed ef stru ct BiNo d e Telemty p e d ata; stru ct BiNo d e * lch ild ,* rch ild ; BiTNo d e,* BiTree; ty p ed ef BiTree QElemTy p e; ty p ed ef stru ct QNo d e QElemTy p e d ata; stru ct QNo d e * n ex t; QNo d e,* Qu eu ePtr; ty p ed ef stru ct Qu eu

4、 ePtr fro n t,rear; /* 隊 頭 、 隊 尾 指 針 * / Lin k Qu eu e; Statu s In itQu eu e(Lin k Qu eu e * Q) /* 構 造 一 個 空 隊 列 Q * / (* Q).fro n t=(* Q).rear=(Qu eu ePtr)mallo c(sizeo f(QNo d e); if(!(* Q).fro n t) ex it(OVERFLOW); (* Q).fro n t-n ex t=NULL; retu rn OK; Statu s Qu eu eEmp ty (Lin k Qu eu e Q) /*

5、若 Q為 空 隊 列 ,則 返 回 TRUE,否 則 返 回 FALSE * / if(Q.fro n t=Q.rear) retu rn TRUE; else retu rn FALSE; Statu s En Qu eu e(Lin k Qu eu e * Q,QElemTy p e e) /* 插 入 元 素 e為 Q的 新 的 隊 尾 元 素 * / Qu eu ePtr p =(Qu eu ePtr)mallo c(sizeo f(QNo d e); if(!p ) /* 存 儲 分 配 失 敗 * / ex it(OVERFLOW); p -d ata=e; p -n ex t=N

6、ULL; (* Q).rear-n ex t=p ; (* Q).rear=p ; retu rn OK; Statu s DeQu eu e(Lin k Qu eu e * Q,QElemTy p e * e) /* 若 隊 列 不 空 ,刪 除 Q的 隊 頭 元 素 ,用 e返 回 其 值 ,并 返 回 OK,否 則 返 回 ERROR * / Qu eu ePtr p ; if(* Q).fro n t=(* Q).rear) retu rn ERROR; p =(* Q).fro n t-n ex t; * e=p -d ata; (* Q).fro n t-n ex t=p -n e

7、x t; if(* Q).rear=p ) (* Q).rear=(* Q).fro n t; free(p ); retu rn OK; v o id CreateBiTree(BiTree * T) /先 序 建 立 二 叉 樹 ch ar ch ; scan f(%c, g etch ar(); if(ch =# ) * T=NULL; else * T=(BiTree)mallo c(sizeo f(BiTNo d e); (* T)-d ata=ch ;p rin tf(請 輸 入 %c的 左 孩 子 :,(* T)-d ata); CreateBiTree( p rin tf(請

8、輸 入 %c的 右 孩 子 :,(* T)-d ata); CreateBiTree( v o id PreOrd erTrav erse(BiTree T) /先 序 遍 歷 if(T) p rin tf(%c,T-d ata);PreOrd erTrav erse(T-lch ild ); PreOrd erTrav erse(T-rch ild ); v o id In Ord erTrav erse(BiTree T) /中 序 遍 歷 if(T) In Ord erTrav erse(T-lch ild ); p rin tf(%c,T-d ata); In Ord erTrav e

9、rse(T-rch ild ); v o id Po stOrd erTrav erse(BiTree T) /后 序 遍 歷 if(T) Po stOrd erTrav erse(T-lch ild ); Po stOrd erTrav erse(T-rch ild ); p rin tf(%c,T-d ata); v o id Lev elTrav erse(BiTree T) /層 次 遍 歷 BiTree p ; Lin k Qu eu e Q;In itQu eu e( if (T) En Qu eu e(wh ile (!Qu eu eEmp ty (Q) DeQu eu e( p

10、 rin tf(%c,p -d ata); if(p -lch ild ) En Qu eu e( if(p -rch ild ) En Qu eu e( in t h eig h t(BiTree T) /求 二 叉 樹 T的 高 度in t m,n ; if(!T) retu rn 0 ;else m=h eig h t(T-lch ild ); n =h eig h t(T-rch ild ); retu rn (mn ?m:n )+1 ; in t LeafCo u n t(BiTree T) /求 二 叉 樹 中 葉 子 結 點 的 數 目 if(!T) retu rn 0 ; el

11、se if(!T-lch ild else retu rn LeafCo u n t(T-lch ild )+LeafCo u n t(T-rch ild ); v o id Bitree_ Rev o lu te(BiTree T) /交 換 所 有 結 點 的 左 右 子 樹 BiTree p ; if (T) p =T-lch ild ; T-lch ild =T-rch ild ;T-rch ild =p ; if(T-lch ild ) Bitree_ Rev o lu te(T-lch ild ); if(T-rch ild ) Bitree_ Rev o lu te(T-rch

12、ild ); in t main () BiTree T; p rin tf(請 輸 入 樹 根 :); CreateBiTree( p rin tf(n 先 序 遞 歸 遍 歷 序 列 :); PreOrd erTrav erse(T); p rin tf(n 中 序 遞 歸 遍 歷 序 列 :); In Ord erTrav erse(T); p rin tf(n 后 序 遞 歸 遍 歷 序 列 :); Po stOrd erTrav erse(T); p rin tf(n 層 次 遍 歷 序 列 :); Lev elTrav erse(T); p rin tf(n 二 叉 樹 的 高 度

13、 為 :%d ,h eig h t(T); p rin tf(n 二 叉 樹 中 葉 子 結 點 數 為 :%d ,LeafCo u n t(T); Bitree_ Rev o lu te(T); p rin tf(n 左 右 子 樹 交 換 后 中 序 遞 歸 遍 歷 序 列 :); In Ord erTrav erse(T); p rin tf(n ); retu rn OK; 串 的 相 關 操 作 # in clu d e # d efin e o k 1 # d efin e ERROR 0 u sin g n amesp ace std ; ty p ed ef stru ct c

14、h ar * ch ; in t len g th ; h strin g ; in t strin sert(h strin g if(p o ss.len g th ) retu rn ERROR; if(T.len g th ) if(!(s.ch =(ch ar * )reallo c(s.ch ,(s.len g th +T.len g th )* sizeo f(ch ar) retu rn ERROR; fo r(i=s.len g th -1 ;i=p o s-1 ;-i) s.ch i+T.len g th =s.ch i; fo r(i=0 ;i=T.len g th -1

15、 ;i+) s.ch i+p o s-1 =T.ch i; s.len g th +=T.len g th ; retu rn o k ; in t Strassig n (h strin g ch ar * c; if(m.ch ) free(m.ch ); fo r(i=0 ,c=ch ars;ci!=0 ;i+); if(!i)m.ch =NULL;m.len g th =0 ; else if(!(m.ch =(ch ar * )mallo c(i* sizeo f(ch ar) retu rn ERROR; fo r(j=0 ;j=i-1 ;j+) m.ch j=ch arsj; m

16、.len g th =i; retu rn o k ; v o id p rin f(h strin g fo r(i=0 ;i=h .len g th -1 ;i+) co u th .ch i; co u t 該 字 符 串 的 長 度 為 : h .len g th ; co u ten d l; in t main () ch ar a1 0 0 ,b 1 0 0 ; co u tab ; h strin g s,T; Strassig n (s,a); p rin f(s); Strassig n (T,b ); p rin f(T); in t p o s; co u tp o s

17、; strin sert(s,p o s,T); co u t把 字 符 串 T插 入 s后 得 到 的 新 字 符 串 為 : ; p rin f(s); retu rn 0 ; 整 數 的 加 減 乘 除 運 算 # in clu d e # d efin e o k 1 # d efin e ERROR 0 u sin g n amesp ace std ; # d efin e STACK_ INIT_ SIZE 1 0 0# d efin e STACKINCREMENT 1 0 ty p ed ef stru ct ch ar * b ase; ch ar * to p ; in

18、t stack size; Sq stack ; in t In (ch ar c) if(c=+) retu rn 1 ; if(c=-) retu rn 1 ; if(c=* ) retu rn 1 ; if(c=/) retu rn 1 ; if(c=() retu rn 1 ; if(c=) retu rn 1 ; if(c=# ) retu rn 1 ; else retu rn 0 ; ch ar Preced e(ch ar a,ch ar b ) if(a=+) if(b =+) retu rn ; if(b =-) retu rn ; if(b =* ) retu rn ;

19、if(b =/) retu rn ; if(a=-) if(b =+) retu rn ; if(b =-) retu rn ; if(b =* ) retu rn ; if(b =/) retu rn ; if(a=* ) if(b =+) retu rn ; if(b =-) retu rn ; if(b =* ) retu rn ; if(b =/) retu rn ; if(b =# ) retu rn ; if(a=/) if(b =+) retu rn ; if(b =-) retu rn ; if(b =* ) retu rn ; if(b =/) retu rn ; if(b

20、=# ) retu rn ; if(a=# ) if(b =+) retu rn ; if(b =-) retu rn ; if(b =* ) retu rn ; if(b =/) retu rn =s.stack size) s.b ase=(ch ar* )reallo c(s.b ase,(s.stack size+STACKINCREMENT )* sizeo f(ch ar); if(!s.b ase) retu rn ERROR; s.to p =s.b ase+s.stack size; s.stack size+=STACKINCREMENT; * s.to p +=e; re

21、tu rn o k ; in t Po p (Sq stack e=* (-s.to p ); retu rn 1 ; in t main () Sq stack OPTR,OPND; ch ar c1 0 0 ,a,b ,th eta,n ; in t f,i;In itstack (OPTR); Pu sh (OPTR,# ); In itstack (OPND); cin c;fo r(i=0 ;ci!=# |Getto p (OPTR)!=# ;) if(!In (ci) Pu sh (OPND,ci);i+; else switch (Preced e(Getto p (OPTR),

22、ci) case:Po p (OPTR,th eta);Po p (OPND,b );Po p (OPND,a);Pu sh (OPND,Op erate(a,th eta,b );b reak ; n =Getto p (OPND); f=(in t) n -4 8 ; co u tfen d l; 數 字 轉 換 # in clu d e u sin g n amesp ace std ;# in clu d ec1 .h ty p ed ef in t SElemTy p e;# in clu d ezh an .h # in clu d ezh an h an sh u .cp p i

23、n t main () Sq Stack s; In itStack (s); in t N;in t e; cin N; wh ile(N) Pu sh (s,N%8 ); N=N/8 ; wh ile(!Stack Emp ty (s) Po p (s,e);co u te=(S).stack size) /* 棧 滿 , 追 加 存 儲 空 間 * / (S).b ase=(SElemTy p e * )reallo c(S).b ase,(S).stack size+STACKINCREMENT)* sizeo f(SElemTy p e); if(!(S).b ase) ex it(

24、OVERFLOW); /* 存 儲 分 配 失 敗 * / (S).to p =(S).b ase+(S).stack size; (S).stack size+=STACKINCREMENT; * (S).to p )+=e; retu rn OK; Statu s Po p (Sq Stack e=* -(S).to p ; retu rn OK; Statu s Stack Emp ty (Sq Stack S) /* 若 棧 S為 空 棧 , 則 返 回 TRUE, 否 則 返 回 FALSE * / if(S.to p =S.b ase) retu rn TRUE; else ret

25、u rn FALSE; /* c1 .h (程 序 名 ) * /# in clu d e # in clu d e# in clu d e /* mallo c()等 * / # in clu d e /* INT_ MAX等 * /# in clu d e /* EOF(=Z或 F6 ),NULL * / # in clu d e /* ato i() * /# in clu d e /* eo f() * / # in clu d e /* flo o r(),ceil(),ab s() * /# in clu d e /* ex it() * / /* 函 數 結 果 狀 態(tài) 代 碼

26、* /# d efin e TRUE 1 # d efin e FALSE 0 # d efin e OK 1# d efin e ERROR 0 # d efin e INFEASIBLE -1/* # d efin e OVERFLOW -2 因 為 在 math .h 中 已 定 義 OVERFLOW的 值 為 3 , 故 去 掉 此 行 * /ty p ed ef in t Statu s; /* Statu s是 函 數 的 類 型 ,其 值 是 函 數 結 果 狀 態(tài) 代 碼 , 如 OK等 * /ty p ed ef in t Bo o lean ; /* Bo o lean 是

27、 布 爾 類 型 ,其 值 是 TRUE或 FALSE * / /* c3 -1 .h 棧 的 順 序 存 儲 表 示 * / # d efin e STACK_ INIT_ SIZE 1 0 /* 存 儲 空 間 初 始 分 配 量 * /# d efin e STACKINCREMENT 2 /* 存 儲 空 間 分 配 增 量 * / ty p ed ef stru ct Sq Stack SElemTy p e * b ase; /* 在 棧 構 造 之 前 和 銷 毀 之 后 , b ase的 值 為 NULL * / SElemTy p e * to p ; /* 棧 頂 指 針

28、* / in t stack size; /* 當 前 已 分 配 的 存 儲 空 間 , 以 元 素 為 單 位 * /Sq Stack ; /* 順 序 棧 * / 完 整 的 四 則 運 算 算 法 # in clu d e # d efin e o k 1 # d efin e ERROR 0 u sin g n amesp ace std ; # d efin e STACK_ INIT_ SIZE 1 0 0# d efin e STACKINCREMENT 1 0 ty p ed ef stru ct ch ar * b ase; ch ar * to p ; in t stac

29、k size; Sq stack ; ty p ed ef stru ct in t * b ase; in t * to p ; in t stack size; Sq stack 1 ; in t In (ch ar c) if(c=+) retu rn 1 ; if(c=-) retu rn 1 ; if(c=* ) retu rn 1 ; if(c=/) retu rn 1 ; if(c=() retu rn 1 ; if(c=) retu rn 1 ; if(c=# ) retu rn 1 ; else retu rn 0 ; ch ar Preced e(ch ar a,ch ar

30、 b ) if(a=+) if(b =+) retu rn ; if(b =-) retu rn ; if(b =* ) retu rn ; if(b =/) retu rn ; if(a=-) if(b =+) retu rn ; if(b =-) retu rn ; if(b =* ) retu rn ; if(b =/) retu rn ; if(a=* ) if(b =+) retu rn ; if(b =-) retu rn ; if(b =* ) retu rn ; if(b =/) retu rn ; if(b =# ) retu rn ; if(a=/) if(b =+) re

31、tu rn ; if(b =-) retu rn ; if(b =* ) retu rn ; if(b =/) retu rn ; if(b =# ) retu rn ; if(a=# ) if(b =+) retu rn ; if(b =-) retu rn ; if(b =* ) retu rn ; if(b =/) retu rn =s.stack size) s.b ase=(ch ar* )reallo c(s.b ase,(s.stack size+STACKINCREMENT)* sizeo f(ch ar); if(!s.b ase) retu rn ERROR; s.to p

32、 =s.b ase+s.stack size; s.stack size+=STACKINCREMENT; * s.to p +=e; retu rn o k ; in t Pu sh (Sq stack 1 if(!s.b ase) retu rn ERROR; s.to p =s.b ase+s.stack size; s.stack size+=STACKINCREMENT; * s.to p +=e; retu rn o k ; in t Po p (Sq stack e=* (-s.to p ); retu rn 1 ; in t Po p (Sq stack 1 e=* (-s.t

33、o p ); retu rn 1 ; in t Zh u an (ch ar b ) in t c; c=(in t)b -4 8 ; retu rn c; in t main () Sq stack OPTR,ONE,TWO; Sq stack 1 OPND; ch ar c1 0 0 ,th eta,k ; in t i,a,b ,m,n ,j,o ,r,sh ;In itstack (OPTR); Pu sh (OPTR,# ); In itstack (OPND);In itstack (ONE);In itstack (TWO); cin c; n =0 ; r=0 ; fo r(i

34、=0 ;ci!=# |Getto p (OPTR)!=# ;) if(!In (ci) Pu sh (ONE,ci);n =n +1 ;i+;sh =1 ; else if(sh =1 ) fo r(j=1 ;j=n ;j+) Po p (ONE,k );Pu sh (TWO,k ); fo r(j=1 ;j=n ;j+) Po p (TWO,k );o =Zh u an (k );r=r* 1 0 +o ; Pu sh (OPND,r); switch (Preced e(Getto p (OPTR),ci) case:Po p (OPTR,th eta);Po p (OPND,b );Po p (OPND,a);Pu sh (OPND,Op erate(a,th eta,b );sh =0 ;b reak ; n =0 ; r=0 ; m=Getto p (OPND); co u tmen d l; retu rn 0 ;

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

更多
正為您匹配相似的精品文檔

相關搜索

關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!