




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第三章3.5假設(shè)s和x用于表示堆棧進入和堆棧退出操作,初始狀態(tài)和最終狀態(tài)為空的堆棧進入和堆棧退出操作序列可以表示為僅由s和x組成的序列??刹僮鞯男蛄蟹Q為合法序列(例如,SXXSX是合法序列,SXS是非法序列)。本文試圖給出一個通用的標準來區(qū)分給定序列與合法序列或非法序列,并證明兩個不同的合法(堆棧操作)序列(對于相同的輸入序列)不可能得到相同的輸出元素(注意:在這種情況下,它指的是元素實體,而不是值)序列。解決方案:一般規(guī)則:任何前n個序列中的s的數(shù)目必須大于或等于x的數(shù)目,并且整個序列中的s的數(shù)目必須等于x的數(shù)目。證據(jù):讓兩個法律序列:T1=SXST2=SXX假設(shè)前n個操作是相同的,并且從第
2、n個操作開始,它是具有不同序列的開始操作點。由于前n個操作是相同的,此時兩個堆棧(堆棧A和堆棧B)的存儲條件完全相同,假設(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;標準輸出#包
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)。基本0)出口(-2);如果(!(*s)?;?)出口(-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;同時(sta.top0!=p)printf(“% d”,* p);p;Printf(右堆棧元素:);p=sta . base1;同時(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;同時(sta.top0!=p)printf(“% d”,* p);p;Printf(右堆棧元素:);p=sta . base1;同時(sta.top1!=p)printf(“% d”,* p);p-;運行結(jié)果:3.21假設(shè)表達式由單字母變量和雙目四個運算符組成。試著寫一個算法,將正常書寫和正確書寫的表達式轉(zhuǎn)換成相反的波蘭表達式。解決方案:程序源代碼:#包括#包括#定義尺寸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-;/加和減可認為是同級別的運算符如果(I=4)I-;/乘和除可認為是同級別的運算符當(dāng)chj chj!(C2)j;if(j=2)j-;if(j=4)j-;如果(ij)返回1;否則返回0;void main()堆棧無線電臺臨時使用許可證ch=0,CT;斯塔。base=(selem類型*)malloc(SIZE * SIZeof(selem類型);如果(!sta.base)出口(
9、0);斯塔。top=sta?;兀凰顾?。大小=0;* sta。top=#;printf(請輸入表達式: n );同時(ch!=#*sta.base=#)ch=getchar();如果(a=chch=z)printf(% c ,ch);其他if(ch=#)CT=*(-sta。頂部);同時(ct!=#)印刷字體( % c ,印刷字體);CT=*(-sta。頂部);-斯塔。頂部;其他if(ch=()* sta。top=ch其他if(ch=)CT=*(-sta。頂部);同時(ct!=()印刷字體( % c ,印刷字體);CT=*(-sta。頂部);否則CT=*(sta。top-1);如果(先驗(ct,
10、ch)=0)* sta。top=ch否則CT=*(-sta。頂部);同時(優(yōu)先(ct,ch)印刷字體( % c ,印刷字體);CT=*(-sta。頂部);*(sta.top)=ch .sta.top運行結(jié)果:3.22如題3.21的假設(shè)條件,試寫一個算法,對以逆波蘭式表示的表達式求值。解:程序源代碼:#包括#包括#定義最大大小堆棧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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課件教學(xué)比賽方案
- 整體護理教程課件下載
- howmany教學(xué)課件分享
- 【黑河】2025年黑龍江黑河市愛輝區(qū)社區(qū)衛(wèi)生服務(wù)中心招聘工作人員23人筆試歷年典型考題及考點剖析附帶答案詳解
- 【臨沂】2025年山東臨沂高新區(qū)部分事業(yè)單位公開招聘綜合類崗位工作人員10人筆試歷年典型考題及考點剖析附帶答案詳解
- 【沈陽】2025年遼寧沈陽農(nóng)業(yè)大學(xué)公開招聘人員11人筆試歷年典型考題及考點剖析附帶答案詳解
- 明星學(xué)員活動方案
- 05《人應(yīng)當(dāng)堅持正義》同步訓(xùn)練【大單元教學(xué)】高二語文同步備課系列統(tǒng)編版選擇性必修中冊
- 文明旅游優(yōu)惠活動方案
- 無關(guān)活動進校園活動方案
- 統(tǒng)編版三年級語文下冊同步高效課堂系列第一單元復(fù)習(xí)課件
- 2025年高考生物真題(安徽)含答案
- 2025年高考真題-政治(黑吉遼卷) 含答案(黑龍江、吉林、遼寧、內(nèi)蒙古)
- T/QX 004-2020工業(yè)清洗作業(yè)人員呼吸防護用品選擇、管理、使用和維護指南
- 河北省石家莊市2025年七年級下學(xué)期語文期末考試卷及答案
- 四川省德陽市2025年七年級下學(xué)期語文期末試卷及答案
- 石獅子購銷合同協(xié)議
- 2025廣州市荔灣區(qū)輔警考試試卷真題
- 課題申報書:基于核心素養(yǎng)發(fā)展理念的小學(xué)數(shù)學(xué)跨學(xué)科主題學(xué)習(xí)設(shè)計的策略研究
- 模聯(lián)面試題及答案
- 上海市楊浦區(qū)2025屆高三語文一模質(zhì)量調(diào)研試卷(含答案)
評論
0/150
提交評論