Python實現的棧(Stack)
阿新 • • 發佈:2018-11-06
棧是一種只能在一端進行插入和刪除操作的資料結構。
前言
python本身已有順序表(List、Tupple)的實現,所以這裡從棧開始
什麼是棧
想象在桌子上放一摞書,這就是棧。這堆書的特點就是,最後被堆進去的,永遠在最上面。從這堆書中取出一本書,哪本最方便?還是最上面的那本。棧這種資料結構就是如此:後進先出(Lask In First Out),即最後被堆進去的資料,最先被拿出來。
棧的實現
棧可以用順序表方式實現,也可以用連結串列方式實現。我大Python的內建資料結構太強大,可以用list直接簡單快捷。人生苦短,我用Python。
class Stack(object): # 初始化棧為空列表 def __init__(self): self.items =[] # 判斷棧是否為空,返回布林值 def is_empty(self): return self.items == [] # 返回棧頂元素 def peek(self): return self.items[len(self.items)-] # 返回棧的發小 def size(self): return len(self.items) # 把新的元素壓入棧 def push(self,item): self.items.append(item) # 把棧頂元素丟出去(出棧) def pop(self,item): return self.items.pop()
例項化一個棧物件
if __name__=='__mian__': # 初始化一個棧物件 my_stack = Stack() # 把'h'入棧 my_stack.push('h') # 把'a'入棧 my_stack.push('a') # 看一下棧的大小(有幾個元素) print(my_stack.size()) # 列印棧頂元素 print(my_stack.peek()) # 把棧頂元素丟出去,並打印出來 print(my_stack.pop()) # 再看一下棧頂元素是誰 print(my_stack.peek()) # 這時候棧的大小是多少 print(my_stack.size()) # 再丟一個棧頂元素 print(my_stack.pop()) # 看一下棧的大小 print(my_stack.size()) # 棧是不是空了? print(my_stack.is_empty())
提示
看完上面的程式碼,聰明的同學一定知道,Python裡面實現棧,就是把list包裝成一個類,再新增一些方法作為棧的基本操作。其他的資料結構在Python中也是以類似的方式實現的。