棧是一種先進後出(fifo)的資料結構,是一種特殊的列表,只能訪問棧頂元素。
棧通常的操作
stack() //建立乙個棧
isempty() //判斷棧是否為空,是則返回true,否則返回false
peek() //返回棧頂元素
size() //返回棧的大小
push() //往棧中新增元素,也叫入棧
pop() //刪除棧頂元素,也叫出棧
用python列表實現棧
class stack(object):
#初始化棧為列表
def __init__(self):
self.stack =
#判斷棧是否為空
def isempty(self):
return self.stack==
#返回棧頂元素
def peek(self):
return self.stack[-1]
#返回棧的大小
def size(self):
return len(self.stack)
#入棧def push(self, item):
#出棧def pop(self):
return self.stack.pop()
#檢視棧內的元素
def show(self):
print(self.stack)
使用棧可以解決我們常見的很多問題,如我們常用的undo也就是撤銷操作就可以用棧來實現,另外還有就是編輯器中基本上都會有的括號匹配,也就是當你編寫**時有以下』)'的括號不匹配的問題,編輯器會報錯。下面我用棧來實現這個操作。
def isvaild(str_vaild):
stack = stack()
list_vaild = list(str_vaild)
for i in range(len(list_vaild)):
c = list_vaild[i]
if (c=='(' or c=='[' or c==''):
return false
return stack.isempty()
print(isvaild(''):
return false
return len(stack)==0
print(isvaild('{}'))
輸出為
true
python實現棧和棧的括號匹配
棧 stack 資料結構只允許在一端進行操作,可以在一端 棧頂 進行出棧和入棧,而在另一端 棧底 不能進行操作,並且後進先出。當順序表和煉表只能在一端進行操作 頭或尾 時,順序表和煉表會變成棧。棧可以用順序表實現也可以用鍊錶實現。棧與順序表的區別 棧資料結構描述的是操作,順序表和煉表描述的是資料如何...
用棧實現括號匹配 python
python資料結構與演算法分析 第二版 用python實現棧,檔名為pystack.py user bin env python coding utf 8 假設列表尾部是棧頂端o 1 class stack def init self self.items defisempty self 判棧空 ...
棧實現括號匹配
匹配思想 從左至右掃瞄乙個字串 或表示式 則每個右括號將與最近遇到的那個左括號相匹配。則可以在從左至右掃瞄過程中把所遇到的左括號存放到堆疊中。每當遇到乙個右括號時,就將它與棧頂的左括號 如果存在 相匹配,同時從棧頂刪除該左括號。演算法思想 設定乙個棧,當讀到左括號時,左括號進棧。當讀到右括號時,則從...