python的棧實現及括號匹配問題

2021-09-24 16:17:19 字數 1257 閱讀 7694

棧是一種先進後出(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 判棧空 ...

棧實現括號匹配

匹配思想 從左至右掃瞄乙個字串 或表示式 則每個右括號將與最近遇到的那個左括號相匹配。則可以在從左至右掃瞄過程中把所遇到的左括號存放到堆疊中。每當遇到乙個右括號時,就將它與棧頂的左括號 如果存在 相匹配,同時從棧頂刪除該左括號。演算法思想 設定乙個棧,當讀到左括號時,左括號進棧。當讀到右括號時,則從...