版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、順序棧 棧的順序存儲(chǔ)結(jié)構(gòu)簡(jiǎn)稱為順序棧,它是運(yùn)算受限的順序表。1、 順序棧的類型定義 #define StackSize 100 /假定預(yù)分配的??臻g最多為100個(gè)元素 typedef char DataType;/假定棧元素的數(shù)據(jù)類型為字符 typedef struct DataType dataStackSize; int top; SeqStack; &
2、#160; 注意: 順序棧中元素用向量存放 棧底位置是固定不變的,可設(shè)置在向量?jī)啥说娜我庖粋€(gè)端點(diǎn) 棧頂位置是隨著進(jìn)棧和退棧操作而變化的,用一個(gè)整型量top(通常稱top為棧頂指針)來(lái)指示當(dāng)前棧頂位置2、 順序棧的基本操作 前提條件: 設(shè)S是SeqStack類型的指針變量。若棧底位置在向量的低端,即S-data0是棧底元素。(1) 進(jìn)棧操作 進(jìn)棧時(shí),需要將S-top加1 注意:
3、160; S-top=StackSize-1表示棧滿"上溢"現(xiàn)象-當(dāng)棧滿時(shí),再做進(jìn)棧運(yùn)算產(chǎn)生空間溢出的現(xiàn)象。 上溢是一種出錯(cuò)狀態(tài),應(yīng)設(shè)法避免。(2) 退棧操作 退棧時(shí),需將S-top減1 注意: S-top<0表示空棧 "下溢"現(xiàn)象當(dāng)??諘r(shí),做退棧運(yùn)算產(chǎn)生的溢出現(xiàn)象。 下溢是正?,F(xiàn)象,常用作程序控制轉(zhuǎn)
4、移的條件。順序棧在進(jìn)棧和退棧操作時(shí)的具體變化情況【參見動(dòng)畫演示】3、順序棧的基本運(yùn)算(1) 置棧空 void InitStack(SeqStack *S) /將順序棧置空 S->top=-1; (2) 判???#160; int StackEmpty(SeqStack *S) return S->top=-1;
5、60; (3) 判棧滿 int StackFull(SeqStack *SS) return S->top=StackSize-1; (4) 進(jìn)棧 void Push(S,x) if (StackFull(S)
6、0; Error("Stack overflow"); /上溢,退出運(yùn)行 S->data+S->top=x;/棧頂指針加1后將x入棧 (5) 退棧 DataType Pop(S) if(StackEmpty(S)
7、60; Error("Stack underflow"); /下溢,退出運(yùn)行 return S->dataS->top-;/棧頂元素返回后將棧頂指針減1 (6) 取棧頂元素 DataType StackTop(S) if(StackEmpty(S)
8、60; Error("Stack is empty"); return S->dataS->top; 4、兩個(gè)棧共享同一存儲(chǔ)空間 當(dāng)程序中同時(shí)使用兩個(gè)棧時(shí),可以將兩個(gè)棧的棧底設(shè)在向量空間的兩端,讓兩個(gè)棧各自向中間延伸。當(dāng)一個(gè)棧里的元素較多,超過(guò)向量空間的一半時(shí),只要另一個(gè)棧的元素不多,那么前者就可以占用后者的部分存
9、儲(chǔ)空間。 只有當(dāng)整個(gè)向量空間被兩個(gè)棧占滿(即兩個(gè)棧頂相遇)時(shí),才會(huì)發(fā)生上溢。因此,兩個(gè)棧共享一個(gè)長(zhǎng)度為m的向量空間和兩個(gè)棧分別占用兩個(gè)長(zhǎng)度為 m/2和m/2的向量空間比較,前者發(fā)生上溢的概率比后者要小得多。順序棧 與線性表類似棧也有兩種存儲(chǔ)結(jié)構(gòu),即順序存儲(chǔ)結(jié)構(gòu)和鏈表存儲(chǔ)結(jié)構(gòu)。棧的順序存儲(chǔ)結(jié)構(gòu)亦稱為順序棧,它是運(yùn)算受限的順序表。1、 順序棧的類型定義 const int MAXSIZE=100; /假定預(yù)分配的棧空間最多為100個(gè)元素 typedef int ElemType;/假定棧元素的數(shù)據(jù)類型為整
10、型 struct SqStack ElemType elemMAXSIZE; /一維數(shù)組 int top;/指針top指向棧頂元素的當(dāng)前位置 注意: SqStack就是棧的順序存儲(chǔ)結(jié)構(gòu)的類型標(biāo)識(shí)符。 順序棧中元素用向量存放 棧底位置是固定不變的,可設(shè)置在向量?jī)啥说娜我庖粋€(gè)端點(diǎn) 棧頂位置是隨著進(jìn)棧和退棧操作而變化的,用一個(gè)
11、整型量top(通常稱top為棧頂指針)來(lái)指示當(dāng)前棧頂位置 例:假設(shè)MAXSIZE取值為,圖.2展示了順序棧S中數(shù)據(jù)元素和棧頂指針的關(guān)系。為了與前文所述top=0為空棧相一致,圖中未畫出S.elem0。邏輯上可利用有效空間為S.elem1,.,S.elem5。2、 順序棧的基本操作 前提條件: 設(shè)S是SeqStack類型的指針變量。若棧底位置在向量的低端,即S.elem0是棧底元素。(1) 進(jìn)棧操作 進(jìn)棧時(shí),需要將top加1 注意: top=MAXSIZE-1表示棧
12、滿 "上溢"現(xiàn)象-當(dāng)棧滿時(shí),再做進(jìn)棧運(yùn)算產(chǎn)生空間溢出的現(xiàn)象。 上溢是一種出錯(cuò)狀態(tài),應(yīng)設(shè)法避免。【算法3.1】void SqStack:push( ElemType e) if(top= =MAXSIZE-1)cout<<"棧滿溢出"<<endl;exit(1);else top+;elemtop=e;(2) 退棧操作 退棧時(shí),需將top減1 注意: top
13、<0表示空棧 "下溢"現(xiàn)象當(dāng)??諘r(shí),做退棧運(yùn)算產(chǎn)生的溢出現(xiàn)象。 下溢是正?,F(xiàn)象,常用作程序控制轉(zhuǎn)移的條件?!舅惴?.2】ElemType SqStack:pop()ElemType x;if(top= =0) cout<< " 棧為空,不能出棧操作"<<endl; exit(1);else x=elemtop;top-;return x;順序棧在進(jìn)棧和退棧操作時(shí)的具體算法演示請(qǐng)點(diǎn)擊查看【算法演示】3、兩個(gè)棧共享同一存儲(chǔ)空間 順序存儲(chǔ)結(jié)構(gòu)條件下的多棧操作也是數(shù)據(jù)結(jié)構(gòu)課程所討論的內(nèi)容。在計(jì)算機(jī)系統(tǒng)軟件中,諸如各種高級(jí)語(yǔ)言的編譯軟件都離不開棧的操作,且往往是同時(shí)使用和管理多個(gè)棧。若讓多個(gè)棧共用一個(gè)向量,其管理和運(yùn)算都很復(fù)雜,這里僅介紹兩個(gè)棧共用一個(gè)向量的問(wèn)題。兩個(gè)棧共用一個(gè)向量又有不同的分配方法。如圖3.3所示。圖3.3(a)的方法是將向量平均分配給兩個(gè)棧(設(shè)向量有n個(gè)元素),它們的棧底分別在下標(biāo)為0和下標(biāo)為
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度網(wǎng)絡(luò)安全拓展合作協(xié)議書范本3篇
- 課程設(shè)計(jì)自動(dòng)打標(biāo)機(jī)
- 二零二五年度廢塑料瓶回收處理及循環(huán)利用合同3篇
- 舞伴匹配課程設(shè)計(jì)
- 二零二五年度景區(qū)道路路燈安裝服務(wù)合同范本2篇
- 貨運(yùn)實(shí)訓(xùn)課程設(shè)計(jì)
- 苯酚丙酮課程設(shè)計(jì)
- 建筑公司安全技術(shù)措施管理制度(2篇)
- 2025年小學(xué)防溺水安全制度樣本(3篇)
- 2025年滬科新版九年級(jí)物理上冊(cè)階段測(cè)試試卷
- (正式版)JBT 9229-2024 剪叉式升降工作平臺(tái)
- 2023版押品考試題庫(kù)必考點(diǎn)含答案
- 化妝品購(gòu)銷合同范本
- 7725i進(jìn)樣閥說(shuō)明書
- 銀監(jiān)會(huì)流動(dòng)資金貸款需求量測(cè)算表
- 榴園小學(xué)寒假留守兒童工作總結(jié)(共3頁(yè))
- 初中物理-電功率大題專項(xiàng)
- 時(shí)光科技主軸S系列伺服控制器說(shuō)明書
- 社會(huì)組織績(jī)效考核管理辦法
- 蘇州智能數(shù)控機(jī)床項(xiàng)目投資計(jì)劃書(模板)
- 貼在學(xué)校食堂門口的對(duì)聯(lián)_在圖書館門前貼的對(duì)聯(lián)
評(píng)論
0/150
提交評(píng)論