版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
3-2棧v第三章棧和隊(duì)列棧的邏輯結(jié)構(gòu)棧的順序存儲(chǔ)結(jié)構(gòu)及實(shí)現(xiàn)棧的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)及實(shí)現(xiàn)學(xué)什么?順序棧和鏈棧的比較3-2-1棧的邏輯結(jié)構(gòu)v第三章棧和隊(duì)列棧的定義棧:限定僅在一端進(jìn)行插入和刪除操作的線性表(a1,…,an-1,an)棧頂(top):允許插入和刪除的一端稱為棧頂棧底(bottom):另一端稱為棧底插入位置:1~n+1刪除位置:1~n線性表插入位置:n+1刪除位置:n棧棧底棧頂棧的操作特性插入:入棧、進(jìn)棧、壓棧刪除:出棧、彈棧a插入刪除bc此時(shí)執(zhí)行出棧操作,哪個(gè)元素可以出棧呢?棧的操作特性:后進(jìn)先出(LastInFirstOut,LIFO)空棧:不含任何數(shù)據(jù)元素的棧
條件判斷
abc棧只是對(duì)插入和刪除操作的位置進(jìn)行了限制并沒有限定插入和刪除操作進(jìn)行的時(shí)間例1有三個(gè)元素按a、b、c的次序依次進(jìn)棧,且每個(gè)元素只允許進(jìn)一次棧,則可能的出棧序列有多少種?情況一出棧:cbaabc情況二出棧:bca棧的操作特性abc能否得到如下出棧序列?出棧:cab例1有三個(gè)元素按a、b、c的次序依次進(jìn)棧,且每個(gè)元素只允許進(jìn)一次棧,則可能的出棧序列有多少種?棧的操作特性棧的抽象數(shù)據(jù)類型定義ADTStackDataModelOperationendADT棧中元素具有相同類型及后進(jìn)先出特性,相鄰元素具有前驅(qū)和后繼關(guān)系InitStack:棧的初始化DestroyStack:棧的銷毀Push:入棧Pop:出棧GetTop:取棧頂元素Empty:判空相對(duì)于其他數(shù)據(jù)結(jié)構(gòu),棧的基本操作是確定的InitStack輸入:無功能:棧的初始化,初始化一個(gè)空棧輸出:無
DestroyStack輸入:無功能:銷毀棧,釋放棧所占用的存儲(chǔ)空間輸出:無Push
輸入:元素值x
功能:在棧頂插入一個(gè)元素x
輸出:如果插入成功,棧頂增加了一個(gè)元素,否則返回失敗信息入棧出棧Push操作需要指明插入位置嗎?棧的抽象數(shù)據(jù)類型定義
Pop輸入:無功能:刪除棧頂元素輸出:如果刪除成功,返回被刪元素值;否則返回失敗信息GetTop輸入:無功能:讀取當(dāng)前的棧頂元素輸出:若棧不空,返回當(dāng)前的棧頂元素值;否則返回失敗信息Empty輸入:無功能:判斷棧是否為空輸出:如果棧為空,返回1;否則,返回0入棧出棧棧的抽象數(shù)據(jù)類型定義3-2-2棧的順序存儲(chǔ)結(jié)構(gòu)及實(shí)現(xiàn)v第三章棧和隊(duì)列順序棧的存儲(chǔ)結(jié)構(gòu)定義順序棧:棧的順序存儲(chǔ)結(jié)構(gòu)
012345678如何表示棧頂:設(shè)變量top存儲(chǔ)棧頂元素所在的下標(biāo)如何表示棧底:用數(shù)組的一端作為棧底如何改造數(shù)組實(shí)現(xiàn)棧的順序存儲(chǔ)呢?topabc什么是順序存儲(chǔ)?constintStackSize=10;template<typenameDataType>classSeqStack{public:SeqStack();~SeqStack();voidPush(DataTypex);DataTypePop();DataTypeGetTop();intEmpty();private:DataTypedata[StackSize];inttop;};
順序棧的類定義InitStack:棧的初始化DestroyStack:棧的銷毀Push:入棧Pop:出棧GetTop:取棧頂元素Empty:判空棧的抽象數(shù)據(jù)類型定義?棧滿:top=StackSize-1template<typenameDataType>voidSeqStack<DataType>::Push(DataTypex){
if(top==StackSize-1)throw"上溢";
data[++top]=x;}時(shí)間復(fù)雜度?什么情況下無法入棧?順序棧的實(shí)現(xiàn)——入棧
012…
StackSize-1topabcx棧空:top=-1template<typenameDataType>DataTypeSeqStack<DataType>::Pop(){
DataTypex;
if(top==-1)throw"下溢";
x=data[top--];
returnx;}如何取棧頂元素?什么情況下無法出棧?
012…
StackSize-1abctop順序棧的實(shí)現(xiàn)——出棧判空的函數(shù)原型是什么?Empty
輸入:無功能:判斷棧是否為空輸出:如果棧為空,返回1;否則,返回0
012…
StackSize-1abctop??眨簍op=-1template<typenameDataType>intSeqStack<DataType>::Empty(){if(top==-1)return1elsereturn0;}順序棧的實(shí)現(xiàn)——判空3-2-3棧的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)及實(shí)現(xiàn)v第三章棧和隊(duì)列存儲(chǔ)結(jié)構(gòu)定義鏈棧:棧的鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)單鏈表是如何存儲(chǔ)線性表的?firsta1a2an∧ai棧頂topanan-1a1∧firsta1a2an∧aiP:用鏈表的哪一端作為棧頂?A:為方便操作,用鏈頭作為棧頂P:鏈棧需要加頭結(jié)點(diǎn)嗎?P:?jiǎn)捂湵頌槭裁醇宇^結(jié)點(diǎn)?A:鏈棧無須加頭結(jié)點(diǎn),也可以為了一致加上頭結(jié)點(diǎn)鏈棧的類定義template<typenameDataType>classLinkedStack{public:LinkedStack();~LinkedStack();voidPush(DataTypex);DataTypePop();DataTypeGetTop();intEmpty();private:
Node<DataType>*top;};InitStack:棧的初始化DestroyStack:棧的銷毀Push:入棧Pop:出棧GetTop:取棧頂元素Empty:判空棧的抽象數(shù)據(jù)類型定義?鏈棧的實(shí)現(xiàn)——入棧topanan-1a1∧xstoptemplate<typenameDataType>voidLinkedStack<DataType>::Push(DataTypex){Node<DataType>*s=nullptr;s=newNode<DataType>;s->data=x;//申請(qǐng)結(jié)點(diǎn)s數(shù)據(jù)域?yàn)閤
s->next=top;top=s;//將結(jié)點(diǎn)s插在棧頂}鏈棧的入棧操作為什么不用判斷是否棧滿?template<typenameDataType>DataTypeLinkedStack<DataType>::Pop(){Node<DataType>*p=nullptr;DataTypex;if(top==nullptr)throw"下溢";x=top->data;p=top;//暫存棧頂元素
top=top->next;//將棧頂結(jié)點(diǎn)摘鏈deletep;returnx;}topanan-1a1∧
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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年福建圖書聯(lián)合發(fā)行有限責(zé)任公司招聘?jìng)淇碱}庫(kù)及答案詳解一套
- 2025年九江市融資擔(dān)保集團(tuán)有限公司招聘?jìng)淇碱}庫(kù)及答案詳解1套
- 2025年榮昌區(qū)榮隆鎮(zhèn)中心衛(wèi)生院臨聘人員招聘?jìng)淇碱}庫(kù)帶答案詳解
- 2025年華能核電開發(fā)有限公司所屬基層企業(yè)社會(huì)化招聘82人備考題庫(kù)及答案詳解1套
- 2025年中原農(nóng)業(yè)保險(xiǎn)股份有限公司招聘67人備考題庫(kù)及一套完整答案詳解
- 2026年可再生能源合同
- 2025年安慶市宿松縣衛(wèi)生健康事業(yè)發(fā)展服務(wù)中心選調(diào)備考題庫(kù)及完整答案詳解1套
- 2025年安龍縣興晟眾力勞務(wù)有限責(zé)任公司面向社會(huì)公開招聘派遣制工作人員備考題庫(kù)及答案詳解參考
- 2026年中小學(xué)生動(dòng)物輔助治療服務(wù)合同
- 永嘉縣中醫(yī)醫(yī)院醫(yī)共體永嘉縣界坑鄉(xiāng)衛(wèi)生院2025年公開招聘勞務(wù)派遣人員備考題庫(kù)及一套參考答案詳解
- 工會(huì)勞動(dòng)爭(zhēng)議調(diào)解會(huì)議記錄范本
- 2025年數(shù)字化營(yíng)銷顧問職業(yè)素養(yǎng)測(cè)評(píng)試卷及答案解析
- 2025年保密試題問答題及答案
- 建設(shè)工程工程量清單計(jì)價(jià)標(biāo)準(zhǔn)(2024版)
- 代建項(xiàng)目管理流程與責(zé)任分工
- cnc刀具刀具管理辦法
- DB14∕T 3069-2024 放射治療模擬定位技術(shù)規(guī)范
- 如何培養(yǎng)孩子深度專注
- 2024年餐飲店長(zhǎng)年度工作總結(jié)
- 護(hù)理8S管理匯報(bào)
- 產(chǎn)前篩查標(biāo)本采集與管理制度
評(píng)論
0/150
提交評(píng)論