版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
3.3棧新課導(dǎo)入裝置只有一端是開放的,所有的操作都只能在這開放的一端進(jìn)行。數(shù)據(jù)具有“先進(jìn)后出、后進(jìn)先出”的特征,可采用“?!边@種數(shù)據(jù)結(jié)構(gòu)。棧棧是一種后進(jìn)先出的線性表,僅允許在表的一端進(jìn)行插入或刪除操作。進(jìn)行插入或刪除操作的一端稱為棧頂,位于棧頂位置的元素稱為棧頂元素;另一端稱為棧底,位于棧底位置的元素稱為棧底元素。棧頂元素棧底元素棧的特性先進(jìn)后出、后進(jìn)先出有限序列性元素的個(gè)數(shù)是有限的,??梢詾榭?,也可包含多個(gè)元素。棧中元素呈現(xiàn)線性特征,棧頂元素有一個(gè)前驅(qū)點(diǎn),棧底元素有一個(gè)后繼點(diǎn),其它元素既有一個(gè)前驅(qū)點(diǎn)又有一個(gè)后繼點(diǎn)。棧頂元素棧底元素牛刀小試1.有六個(gè)元素按照6,5,4,3,2,1的順序依次進(jìn)棧,則出棧順序不可能是()5,4,3,6,1,24,5,3,1,2,63,4,6,5,2,12,3,4,1,5,62.一個(gè)棧的入棧序列是1,2,3,4,5,其出棧序列為s1,s2,s3,s4,s5,若s2是3,則s1不可能是()A.1B.2C.4D.5CD棧的創(chuàng)建:數(shù)組創(chuàng)建棧一般按照順序結(jié)構(gòu)存儲(chǔ),可以使用數(shù)組來實(shí)現(xiàn)。棧頂元素在數(shù)組中的位置會(huì)發(fā)生改變,因此使用top變量來記錄棧頂元素在數(shù)組中的位置。棧的創(chuàng)建:鏈表創(chuàng)建棧的鏈?zhǔn)酱鎯?chǔ)稱為鏈棧,設(shè)置棧頂指針top為鏈棧的頭指針。特點(diǎn):克服了用數(shù)組實(shí)現(xiàn)的順序棧空間利用率不高的缺點(diǎn),但要為每個(gè)棧元素分配額外的指針空間。棧操作(建棧\入棧IN\出棧OUT)例:有5個(gè)字母“a”“b”“c”“d”“e”按序入棧,可創(chuàng)建長(zhǎng)度為5的棧st:初始為空串,
棧頂指針top設(shè)置為-1代碼示例:top=-1st=[“”]*5棧按順序結(jié)構(gòu)存儲(chǔ),通過數(shù)組實(shí)現(xiàn),所以Python可使用列表創(chuàng)建棧棧操作(建棧\入棧IN\出棧OUT)棧頂指針top記錄棧頂元素的位置,初始值為-1,進(jìn)棧一個(gè)元素,top指針加1,即st[top]=棧頂元素棧操作(建棧\入棧IN\出棧OUT)top=-1#初始值top=top+1 #top=0st[top]=”a”#a入棧,top指向a的位置top=top+1 #top=1st[top]=”b”#b入棧,top指向b的位置top=top+1 #top=2st[top]=”c”#c入棧,top指向c的位置top=top+1 #top=3st[top]=”d”#d入棧,top指向d的位置top=top+1 #top=4st[top]=”e”#e入棧,top指向e的位置棧操作(建棧\入棧IN總結(jié)\出棧OUT)停止入棧的條件是什么?st=[“”]*5top=-1while______________top+=1st[top]=“*”top<len(st):棧操作(建棧\入棧IN\出棧OUT)出棧,排在棧頂?shù)脑匾来纬鰲#瑃op指針變量依次減1,直至top的值等于-1棧操作(建棧\入棧IN\出棧OUT)top=4#初始值st[top]=””#e出棧top=top-1 #top=3,top指向d的位置st[top]=””#d出棧top=top-1 #top=2,top指向c的位置st[top]=””#c出棧top=top-1 #top=1,top指向b的位置st[top]=””#b出棧top=top-1 #top=0,top指向a的位置st[top]=””#a出棧top=top-1 #top=-1,??胀V钩鰲5臈l件是什么?top=len(st)-1while____________print(st[top])st[top]=“”top-=1top!=-1:棧應(yīng)用1:十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)算法思想:1)用棧結(jié)構(gòu)存放每次獲得的余數(shù)2)根據(jù)棧特征輸出每次獲得的余數(shù)st=[0]*100#初始值為0top=-1num=int(input(“輸入十進(jìn)制數(shù)”))whilenum!=0:___________________________#將余數(shù)放入棧num=num//2whiletop!=-1:print(st[top],end=“”)______________________________top+=1st[top]=num%2st[top]=“”top-=1括號(hào)匹配將表達(dá)式中數(shù)字和運(yùn)算符號(hào)忽略,直接判斷左右括號(hào)的數(shù)量和位置是否匹配,判斷過程用棧結(jié)構(gòu)來實(shí)現(xiàn):若出現(xiàn)左括號(hào)則進(jìn)棧,右括號(hào)則把棧頂?shù)淖罄ㄌ?hào)出棧,判斷是否匹配,分下列3種情況:棧空,出現(xiàn)右括號(hào),不匹配。掃描結(jié)束,棧中還有左括號(hào),不匹配。掃描結(jié)束,??眨ヅ?。數(shù)據(jù)合并問題程序備注st=[""]*100#初始化
top=-1#初始化為空棧
flag=True#標(biāo)記是否有不匹配的情況
s=input("請(qǐng)輸入數(shù)學(xué)表達(dá)式:")初始化各項(xiàng)數(shù)據(jù)foriinrange(len(s)):
ifs[i]=="(":#左括號(hào)入棧
top+=1
st[top]=s[i]
elifs[i]==")":#右括號(hào)與棧頂元素比較
iftop==-1:
flag=False
break
else:
top-=1從左往右逐步處理數(shù)學(xué)表達(dá)式:若為左括號(hào)則入棧;若為右括號(hào)則與棧頂指針進(jìn)行匹配。數(shù)據(jù)合并問題程序備注iftop>0:#棧中還有剩余元素
flag=False棧中還有剩余元素,即左括號(hào)數(shù)量大于右括號(hào)。ifflag:
print("括號(hào)匹配")
else:
print("括號(hào)不匹配")請(qǐng)輸入數(shù)學(xué)表達(dá)式:(((a+b)*(c-d)-e)/f)括號(hào)匹配請(qǐng)輸入數(shù)學(xué)表達(dá)式:((a+b)*c)-d)+(e括號(hào)不匹配字母A、B、C、D、E、F依次入棧,然后依次出棧并輸出foriin"ABCDEF":
top+=1
st[top]=i
whiletop>-1:
print(st[top],"出棧")
top-=1st=[]
foriin"ABCDEF":
st.append(i)
print(len(st))
foriinrange(len(st)):
print(st.pop(),"出?!?用列表自帶函數(shù)和方法實(shí)現(xiàn)棧逆波蘭表達(dá)式逆波蘭表達(dá)式(后綴表達(dá)式):將運(yùn)算符置于其運(yùn)算對(duì)象之后,沒有括號(hào),無需考慮運(yùn)算符號(hào)的優(yōu)先級(jí)。中綴表達(dá)式轉(zhuǎn)后綴表達(dá)式:表達(dá)式中加入括號(hào);將所有運(yùn)算符移到對(duì)應(yīng)括號(hào)的右邊;刪除所有的括號(hào)。逆波蘭表達(dá)式計(jì)算:從左往右掃描逆表達(dá)式,遇到數(shù)字入棧;遇到運(yùn)算符號(hào),將棧中最上方的兩個(gè)元素依次出棧并用運(yùn)算符計(jì)算,將計(jì)算結(jié)果壓入棧中。重復(fù)上述過程直至表達(dá)式掃描結(jié)束。表達(dá)式第一步第二步第三步a+b*c(a+(b*c))(a(bc)*)+abc*+6+(8-2)*2/3(6+(((8-2)*2)/3))(6(((82
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 茶園互換合同
- 財(cái)務(wù)合同管理崗位風(fēng)險(xiǎn)
- 貝雷片租賃合同范本
- 保險(xiǎn)合同十句話
- 山西省2024八年級(jí)物理上冊(cè)第六章質(zhì)量與密度專題訓(xùn)練12.理解質(zhì)量和密度課件新版新人教版
- 深圳市中薈高級(jí)中學(xué)2024-2025學(xué)年高三上學(xué)期期中考試數(shù)學(xué)試卷
- 《船用鋼質(zhì)斜梯》
- 貴州省貴陽市觀觀山湖區(qū)美的中學(xué)2024-2025學(xué)年九年級(jí)上學(xué)期11月期中考試化學(xué)試題
- 無鹵低煙阻燃電纜料相關(guān)項(xiàng)目投資計(jì)劃書
- 石英玻璃管(棒)相關(guān)行業(yè)投資規(guī)劃報(bào)告
- CTD格式內(nèi)容詳解
- 海航集團(tuán)空中乘務(wù)員招聘報(bào)名表
- 胃癌臨床路徑(2021年版)
- 人教中職數(shù)學(xué)球PPT學(xué)習(xí)教案
- [QC成果]戶外主變安裝防墜落懸掛裝置的研制范本
- 水文地質(zhì)勘查招標(biāo)文件范本
- 抽動(dòng)穢語綜合征量表(TSGS)
- 世界頂尖流化床品牌Glatt實(shí)驗(yàn)室流化床
- 采區(qū)變電所設(shè)備安裝方案及安全技術(shù)措施
- 機(jī)電系統(tǒng)一線品牌表
- 會(huì)計(jì)、出納交接表模板
評(píng)論
0/150
提交評(píng)論