日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 顺序栈及基本操作

發(fā)布時間:2025/3/21 python 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 顺序栈及基本操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

順序棧

順序棧,即用順序表實現(xiàn)棧存儲結(jié)構(gòu)。通過前面的學(xué)習(xí)我們知道,使用棧存儲結(jié)構(gòu)操作數(shù)據(jù)元素必須遵守 “先進后出” 的原則,本節(jié)就 “如何使用順序表模擬棧以及實現(xiàn)對棧中數(shù)據(jù)的基本操作(出棧和入棧)” 給大家做詳細(xì)介紹。

如果你仔細(xì)觀察順序表(底層實現(xiàn)是數(shù)組)和棧結(jié)構(gòu)就會發(fā)現(xiàn),它們存儲數(shù)據(jù)的方式高度相似,只不過棧對數(shù)據(jù)的存取過程有特殊的限制,而順序表沒有。

通過圖 1 和圖 2 的對比不難看出,使用順序表模擬棧結(jié)構(gòu)很簡單,只需要將數(shù)據(jù)從 a 數(shù)組下標(biāo)為 0 的位置依次存儲即可。
從數(shù)組下標(biāo)為 0 的模擬棧存儲數(shù)據(jù)是常用的方法,從其他數(shù)組下標(biāo)處存儲數(shù)據(jù)也完全可以,這里只是為了方便初學(xué)者理解。

了解了順序表模擬棧存儲數(shù)據(jù)后,接下來看如何模擬棧中元素出棧的操作。由于棧對存儲元素出棧的次序有"先進后出"的要求,如果想將圖 1 中存儲的元素 1 從棧中取出,需先將元素 4、元素 3 和元素 2 依次從棧中取出。

這里給出使用順序表模擬棧存儲結(jié)構(gòu)常用的實現(xiàn)思路,即在順序表中設(shè)定一個實時指向棧頂元素的變量(一般命名為 top),top 初始值為 -1,表示棧中沒有存儲任何數(shù)據(jù)元素,及棧是"空棧"。一旦有數(shù)據(jù)元素進棧,則 top 就做 +1 操作;反之,如果數(shù)據(jù)元素出棧,top 就做 -1 操作。

順序棧元素入棧


因此,python語言實現(xiàn)代碼為:

stack = list() top = -1def push(val):stack.append(val)top += 1return stack[top]

順序元素的出棧

其實,top變量的設(shè)置對模擬數(shù)據(jù)的入棧操作沒有實際的幫助,他是為實現(xiàn)數(shù)據(jù)的出棧操作做準(zhǔn)備的。

元素4和元素3全部出棧后,元素2才能出棧。代碼實現(xiàn)為:

def pop():if top == -1: # 如果top=-1 直接return -1return -1result = stack.pop() # 出棧 top -= 1 # top -= 1return result # 返回出棧的元素

總結(jié)

通過學(xué)習(xí)順序表模擬棧中數(shù)據(jù)入棧和出棧的操作,初學(xué)者完成了對順序棧的學(xué)習(xí),這里給出順序棧對數(shù)據(jù)基本操作的python代碼:

class Stack:def __init__(self):self.stack = list()self.top = -1def push(self, val):self.stack.append(val)self.top += 1return self.stack[self.top]def pop(self):if self.stack == -1:return -1result = self.stack.pop()self.top -= 1return result

總結(jié)

以上是生活随笔為你收集整理的python 顺序栈及基本操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。