




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 第三章 棧和隊(duì)列3.1 棧 3.1.1 抽象數(shù)據(jù)類(lèi)型棧的定義 3.1.2 棧的表示和實(shí)現(xiàn)3.2 棧的應(yīng)用舉例3.3 隊(duì)列 3.3.1 抽象數(shù)據(jù)類(lèi)型隊(duì)列的定義 3.3.2 隊(duì)列的表示和實(shí)現(xiàn)棧的定義棧棧是只能在表尾插入和刪除的線(xiàn)性表。入棧出棧anan-1a1棧頂棧底后進(jìn)先出后進(jìn)先出練習(xí)一個(gè)棧的入棧序列是ABCDE,則其輸出序列不可能是( )A,EDCBAB,DECBAC,DCEABD,ABCDEC順序棧-存儲(chǔ)結(jié)構(gòu)以順序存儲(chǔ)方式存儲(chǔ)的棧叫做順序棧順序棧。basetopbasetopABCDEbasetopAB順序棧-存儲(chǔ)結(jié)構(gòu)類(lèi)型說(shuō)明:#define MAXSIZE 100typedef struc
2、tSElemType *base;SElemType *top;int stacksize;SqStack棧的運(yùn)算初始化棧:InitStack(S)取棧頂元素:GetTop(S,x)入棧:Push(S,x)出棧:Pop (S)初始化棧:void InitStack(SqStack &S) S.base=(SElemType *)malloc(MAXSIZE*sizeof(SElemType); if(!S.base)exit(-1); S.top=S.base; S.stacksize=MAXSIZE; 取棧頂元素:SElemType GetTop(SqStack S) if(S.to
3、p=S.base)exit(-1); else return *(S.top-1); 入棧:void Push (SqStack &S, SElemType x) if (S.top-S.base=S.stacksize) error(“溢出”); else *S.top+=x; n出棧:void Pop (SqStack &S, SElemType &x) if(S.top=S.base)error(“???,不能刪除”);else x= *-S.top; 鏈棧用動(dòng)態(tài)方式來(lái)存儲(chǔ)棧可節(jié)省空間采用鏈表存儲(chǔ)的棧為鏈棧鏈棧由于棧的操作是線(xiàn)性表操作的特例,所以不作詳細(xì)討論。a1a
4、2a3an top3.2 棧的應(yīng)用舉例 3.2.1 數(shù)制轉(zhuǎn)換 3.2.2 括號(hào)匹配的檢驗(yàn) 3.2.3 迷宮求解 3.2.4 表達(dá)式求解 3.2.2 括號(hào)匹配問(wèn)題算法的設(shè)計(jì)思想:(1)若是“左括號(hào)”,則入棧;(2)若是“右括號(hào)”,則有兩種情況: a) 若??眨瑒t表明“右括號(hào)”多了,匹配失敗; b) 否則,與棧頂元素比較: 若相匹配,則“左括號(hào)”出棧; 否則匹配失敗。(3)當(dāng)表達(dá)式檢驗(yàn)結(jié)束時(shí): 若??眨ヅ涑晒?; 否則表明“左括號(hào)”多了,匹配失敗。算法如下:Status matching(string &exp) int state=1; while(ifront=0; Q-rear=0;
5、n判斷隊(duì)列是否為空:BOOL queue_empty(seqqueue Q) if (Q.front=Q.rear) return TRUE; else return FALSE; n判斷隊(duì)列是否為滿(mǎn):BOOL queue_full(seqqueue Q) if (1+Q.rear) % maxsize=Q.front) return TRUE; else return FALSE; 尾指針的下一個(gè)位置是頭指針?biāo)肝恢脮r(shí)為滿(mǎn)n入隊(duì)void Enqueue(seqqueue * Q,elementtype x)if (full(Q) error(“溢出”); else Q-rear=(1+Q-r
6、ear) % maxsize; Q-dataQ-rear=x; 循環(huán)隊(duì)列的運(yùn)算取隊(duì)頭元素:elementtype queue_front(seqqueue Q,elementtype *x) if (queue_empty(Q) )error(“隊(duì)空”);else *x=Q.data(Q.front+1)% maxsize); n出隊(duì)void Outqueue(seqqueue * Q, elementtype *x)if (empty(*Q) )error(“隊(duì)空,不能出隊(duì)”); else Q-front=(Q-front+1) % maxsize; *x= Q-dataQ-front; 鏈
7、隊(duì)列-存儲(chǔ)結(jié)構(gòu)頭指針始終指向表頭,尾指針始終指向表尾;采用帶頭節(jié)點(diǎn)的鏈表形式。a1a2anfrontrearlinkqueue類(lèi)型說(shuō)明typedef struct node *front,*rear; /僅需要頭尾指針即可 linkqueue鏈隊(duì)列的運(yùn)算初始化隊(duì)列:void init_queue(linkqueue *Q) Q-front=(node *)malloc(sizeof(node); Q-rear=Q-front; Q-front-next=NULL; n取隊(duì)頭元素:void queue_front(linkqueue * Q, elementtype * x); if (empt
8、y(*Q) ) error(“隊(duì)空,不能取元素”); else *x=Q-front-next-data; n判斷隊(duì)為空:BOOL queue_empty(linkqueue Q) return Q.front=Q.rear;鏈隊(duì)列的運(yùn)算入隊(duì):void Enqueue(linkqueue * Q, elementtype x) node *P=(node *)malloc(sizeof(node); P-data=x; P-next=NULL; Q-rear-next=P; Q-rear=P; n出隊(duì):void Outqueue(linkqueue * Q, elementtype * x); if (empty(*Q) )error(“隊(duì)空,不能出隊(duì)”); else *x=Q-front-next-data; node * u=Q-fron
溫馨提示
- 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. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 我的同桌日常生活寫(xiě)人作文8篇
- 現(xiàn)在完成時(shí)態(tài)結(jié)構(gòu)及應(yīng)用解析:八年級(jí)英語(yǔ)基礎(chǔ)語(yǔ)法訓(xùn)練教案
- 我的奇思妙想下冊(cè)作文300字11篇
- Goodman-Smith修正方法及在轉(zhuǎn)向架構(gòu)架中的應(yīng)用
- 正式離職通知書(shū)及勞動(dòng)合同解除證明(8篇)
- 二維鐵電材料性能的機(jī)器學(xué)習(xí)模型構(gòu)建及優(yōu)化
- 怎么寫(xiě)春節(jié)的作文15篇
- 我的介紹250字10篇
- 機(jī)床裝備產(chǎn)業(yè)聯(lián)盟體內(nèi)多企業(yè)協(xié)同排產(chǎn)研究
- 保護(hù)環(huán)境作文一年級(jí)8篇
- 油田數(shù)字化運(yùn)維理論考試題庫(kù)-上(單選題)
- 護(hù)理教育程序
- 麻風(fēng)病知識(shí)講座課件
- 氨區(qū)作業(yè)安全培訓(xùn)課件
- 2025內(nèi)蒙古中考:生物必背知識(shí)點(diǎn)
- 2025年湖北省新高考信息卷(一)化學(xué)試題及答案
- 巖土工程設(shè)計(jì)課件
- 校醫(yī)招聘考試試題及答案
- 新能源安規(guī)試題及答案
- 2O25中國(guó)商業(yè)航天創(chuàng)新生態(tài)報(bào)告
- 江蘇省南通等六市2025屆高三最后一卷英語(yǔ)試卷含解析
評(píng)論
0/150
提交評(píng)論