數(shù)據(jù)結(jié)構(gòu)編程.pdf

上傳人:小** 文檔編號(hào):16826225 上傳時(shí)間:2020-10-29 格式:PDF 頁(yè)數(shù):21 大?。?30.90KB
收藏 版權(quán)申訴 舉報(bào) 下載
數(shù)據(jù)結(jié)構(gòu)編程.pdf_第1頁(yè)
第1頁(yè) / 共21頁(yè)
數(shù)據(jù)結(jié)構(gòu)編程.pdf_第2頁(yè)
第2頁(yè) / 共21頁(yè)
數(shù)據(jù)結(jié)構(gòu)編程.pdf_第3頁(yè)
第3頁(yè) / 共21頁(yè)

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

5 積分

下載資源

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

資源描述:

《數(shù)據(jù)結(jié)構(gòu)編程.pdf》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)編程.pdf(21頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、二 叉 樹(shù) 的 相 關(guān) 操 作 # 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() * / /* 函 數(shù) 結(jié) 果 狀 態(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是 函 數(shù) 的 類(lèi) 型 ,其 值 是 函 數(shù) 結(jié) 果 狀 態(tài) 代 碼 , 如OK等 * / ty p ed ef in t Bo o lean ; /* Bo o lean 是 布 爾 類(lèi) 型 ,其 值 是 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; /* 隊(duì) 頭 、 隊(duì) 尾 指 針 * / Lin k Qu eu e; Statu s In itQu eu e(Lin k Qu eu e * Q) /* 構(gòu) 造 一 個(gè) 空 隊(duì) 列 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為 空 隊(duì) 列 ,則 返 回 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的 新 的 隊(duì) 尾 元 素 * / Qu eu ePtr p =(Qu eu ePtr)mallo c(sizeo f(QNo d e); if(!p ) /* 存 儲(chǔ) 分 配 失 敗 * / 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) /* 若 隊(duì) 列 不 空 ,刪 除 Q的 隊(duì) 頭 元 素 ,用 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) /先 序 建 立 二 叉 樹(shù) 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(請(qǐng) 輸 入 %c的 左 孩 子 :,(* T)-d ata); CreateBiTree( p rin tf(請(qǐng)

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) /求 二 叉 樹(shù) 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) /求 二 叉 樹(shù) 中 葉 子 結(jié) 點(diǎn) 的 數(shù) 目 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) /交 換 所 有 結(jié) 點(diǎn) 的 左 右 子 樹(shù) 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(請(qǐng) 輸 入 樹(shù) 根 :); 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 二 叉 樹(shù) 的 高 度

13、 為 :%d ,h eig h t(T); p rin tf(n 二 叉 樹(shù) 中 葉 子 結(jié) 點(diǎn) 數(shù) 為 :%d ,LeafCo u n t(T); Bitree_ Rev o lu te(T); p rin tf(n 左 右 子 樹(shù) 交 換 后 中 序 遞 歸 遍 歷 序 列 :); In Ord erTrav erse(T); p rin tf(n ); retu rn OK; 串 的 相 關(guān) 操 作 # 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 該 字 符 串 的 長(zhǎng) 度 為 : 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 ; 整 數(shù) 的 加 減 乘 除 運(yùn) 算 # 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; 數(shù) 字 轉(zhuǎn) 換 # 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) /* 棧 滿(mǎn) , 追 加 存 儲(chǔ) 空 間 * / (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); /* 存 儲(chǔ) 分 配 失 敗 * / (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() * / /* 函 數(shù) 結(jié) 果 狀 態(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是 函 數(shù) 的 類(lèi) 型 ,其 值 是 函 數(shù) 結(jié) 果 狀 態(tài) 代 碼 , 如 OK等 * /ty p ed ef in t Bo o lean ; /* Bo o lean 是

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

28、* / in t stack size; /* 當(dāng) 前 已 分 配 的 存 儲(chǔ) 空 間 , 以 元 素 為 單 位 * /Sq Stack ; /* 順 序 棧 * / 完 整 的 四 則 運(yùn) 算 算 法 # 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 ;

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


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