版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第三章3.5假設(shè)s和x用于表示堆棧進(jìn)入和堆棧退出操作,初始狀態(tài)和最終狀態(tài)為空的堆棧進(jìn)入和堆棧退出操作序列可以表示為僅由s和x組成的序列??刹僮鞯男蛄蟹Q為合法序列(例如,SXXSX是合法序列,SXS是非法序列)。本文試圖給出一個通用的標(biāo)準(zhǔn)來區(qū)分給定序列與合法序列或非法序列,并證明兩個不同的合法(堆棧操作)序列(對于相同的輸入序列)不可能得到相同的輸出元素(注意:在這種情況下,它指的是元素實(shí)體,而不是值)序列。解決方案:一般規(guī)則:任何前n個序列中的s的數(shù)目必須大于或等于x的數(shù)目,并且整個序列中的s的數(shù)目必須等于x的數(shù)目。證據(jù):讓兩個法律序列:T1=SXST2=SXX假設(shè)前n個操作是相同的,并且從第
2、n個操作開始,它是具有不同序列的開始操作點(diǎn)。由于前n個操作是相同的,此時(shí)兩個堆棧(堆棧A和堆棧B)的存儲條件完全相同,假設(shè)堆棧的頂部元素此時(shí)都是A。第n個1操作是不同的,所以T1的第n個1操作是s,T2的第n個1操作是x。假設(shè)B是堆疊的,T1的輸出順序必須是先B后A;T2將是一個堆棧,它的輸出順序必須是先a后B.由于T1的輸出是ba而T2的輸出序列是ab這表明兩個不同的合法堆棧操作序列的輸出元素序列一定是不同的。3.9嘗試將下面的遞歸過程重寫為遞歸過程。void ditui(int n)int I;i=n。而(i1)coutxif(x=0)sum=0;其他測試(總和);sum=x;標(biāo)準(zhǔn)輸出#包
3、括#定義STACK_INIT_SIZE 100#定義TURE 1#定義FALSE 0#定義ok 1#定義錯誤0#定義不可行-1typedef int selemtypetypedef int狀態(tài);typedef結(jié)構(gòu)int * base2;selem type * top2;int stacksizesqstack。狀態(tài)INITstack(sqstack * s)int * p;p=(selem type *)malloc(STACK _ INIT _ SIZE * sizeof(selem type);(*s)?;鶖?shù)0=(*s)。top0=p;(*s)?;鶖?shù)1=(*s)。top1=p STAC
4、K _ INIT _ SIZE-1;如果(!(*s)?;?)出口(-2);如果(!(*s)。基地1)出口(-2);返回ok;狀態(tài)推送(sqstack * s,int i,selemtype e)if(i=0)if(*)頂部0=(*)基本0 (STACK_INIT_SIZE/2)-1)返回錯誤;else *(s)。top0=e;返回ok;if(i=1)if(*)頂部1=(*)base1-(STACK_INIT_SIZE/2) 1)返回錯誤;else *(s)。top1-=e;返回ok;返回錯誤;狀態(tài)彈出(sqstack * s,int i,selemtype * e)if(i=0(*s)。前0
5、=(* s)。base0返回錯誤;if(i=1(*s)。頂部1=(*)。base1)返回錯誤;if(i=0) * e=*(-(*)s)。top0);返回ok;if(i=1) * e=*(-(*)s)。top1);返回ok;void main()sqstack sta。selem type e;selem type * p;int I;如果(INITstack(sta) printf(“已創(chuàng)建雙堆棧 n”);Printf(請輸入推送結(jié)束(0/1)和推送元素: n );scanf(“% d % d”,即e);如果(推(sta,即e)打印(元素已堆疊);Printf(請輸入推送結(jié)束(0/1)和推送元
6、素: n );scanf(“% d % d”,即e);如果(推(sta,即e)打印(元素已堆疊);Printf(請輸入推送結(jié)束(0/1)和推送元素: n );scanf(“% d % d”,即e);如果(推(sta,即e)打印(元素已堆疊);Printf(左堆棧元素:);p=sta . base0;同時(shí)(sta.top0!=p)printf(“% d”,* p);p;Printf(右堆棧元素:);p=sta . base1;同時(shí)(sta.top1!=p)printf(“% d”,* p);p-;printf( n請輸入堆棧結(jié)尾(0/1): n );scanf(“% d”,I);如果(Pop(s
7、ta,即e) printf(n堆棧頂部元素%d從堆棧中出來n ,e);Printf(左堆棧元素:);p=sta . base0;同時(shí)(sta.top0!=p)printf(“% d”,* p);p;Printf(右堆棧元素:);p=sta . base1;同時(shí)(sta.top1!=p)printf(“% d”,* p);p-;運(yùn)行結(jié)果:3.21假設(shè)表達(dá)式由單字母變量和雙目四個運(yùn)算符組成。試著寫一個算法,將正常書寫和正確書寫的表達(dá)式轉(zhuǎn)換成相反的波蘭表達(dá)式。解決方案:程序源代碼:#包括#包括#定義尺寸100typedef char selemtypetypedef結(jié)構(gòu)selemtype * bas
8、eselemtype * topint大??;堆棧;int優(yōu)先(char c1,char c2)char ch5= #-*/;int i=0,j=0;如果(c1=()返回0;當(dāng)(chi chi!=c1) i。如果(I=2)I-;/加和減可認(rèn)為是同級別的運(yùn)算符如果(I=4)I-;/乘和除可認(rèn)為是同級別的運(yùn)算符當(dāng)chj chj!(C2)j;if(j=2)j-;if(j=4)j-;如果(ij)返回1;否則返回0;void main()堆棧無線電臺臨時(shí)使用許可證ch=0,CT;斯塔。base=(selem類型*)malloc(SIZE * SIZeof(selem類型);如果(!sta.base)出口(
9、0);斯塔。top=sta?;?;斯塔。大小=0;* sta。top=#;printf(請輸入表達(dá)式: n );同時(shí)(ch!=#*sta.base=#)ch=getchar();如果(a=chch=z)printf(% c ,ch);其他if(ch=#)CT=*(-sta。頂部);同時(shí)(ct!=#)印刷字體( % c ,印刷字體);CT=*(-sta。頂部);-斯塔。頂部;其他if(ch=()* sta。top=ch其他if(ch=)CT=*(-sta。頂部);同時(shí)(ct!=()印刷字體( % c ,印刷字體);CT=*(-sta。頂部);否則CT=*(sta。top-1);如果(先驗(yàn)(ct,
10、ch)=0)* sta。top=ch否則CT=*(-sta。頂部);同時(shí)(優(yōu)先(ct,ch)印刷字體( % c ,印刷字體);CT=*(-sta。頂部);*(sta.top)=ch .sta.top運(yùn)行結(jié)果:3.22如題3.21的假設(shè)條件,試寫一個算法,對以逆波蘭式表示的表達(dá)式求值。解:程序源代碼:#包括#包括#定義最大大小堆棧100#定義增量10#定義ok 1#定義錯誤-100typedef int elemtype2typedef int狀態(tài);typedef結(jié)構(gòu)elemtype2 * topelemtype2 * baseint大?。?stack2狀態(tài)initstack2(stack2 da)爸爸。base=(elem類型2 *)malloc(max _
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版膽囊炎常見癥狀及護(hù)理技術(shù)探討
- 中國的教育制度
- 景岡山的課件
- 2025中意寧波生態(tài)園控股集團(tuán)有限公司第三次招聘1人(浙江)筆試考試參考題庫及答案解析
- 晚學(xué)課件喝椰子
- 職業(yè)教育規(guī)劃
- 產(chǎn)婦營養(yǎng)餐教學(xué)
- 健康評估案列分析
- 會計(jì)專業(yè)沙盤實(shí)訓(xùn)總結(jié)
- 星球宇宙課件
- 煤炭代加工合同范本
- 2025新業(yè)態(tài)勞動爭議審判案件白皮書-
- 精神病人接觸技巧
- 景區(qū)安全協(xié)議合同范本
- 政務(wù)頒獎禮儀培訓(xùn)
- 2025年大學(xué)《地理信息科學(xué)-地圖學(xué)》考試備考試題及答案解析
- 雨課堂在線學(xué)堂《信息素養(yǎng)-學(xué)術(shù)研究的必修課》作業(yè)單元考核答案
- 2025年國家開放大學(xué)《水利水電建筑工程》期末考試復(fù)習(xí)題庫及答案解析
- 【MOOC】《大學(xué)足球》(西南交通大學(xué))章節(jié)期末慕課答案
- 羅翔人物介紹
- 云南省2025年高二上學(xué)期普通高中學(xué)業(yè)水平合格性考試《信息技術(shù)》試卷(解析版)
評論
0/150
提交評論