棧的設計和使用

2022-08-13 03:27:14 字數 971 閱讀 4166

棧是常用的資料結構。儘管一般的面試裡不會讓直接寫乙個棧的實現,不過跟棧有關的程式設計題很多,今天就遇到乙個。

首先看一下棧的定義。棧是乙個集合,具有下面的2種基本操作

所以棧在移除元素的時候是遵循lifo(last in, first out),也就是後進先出的原則的。

直接設計**:

class stack(object):

"""docstring for stack"""

def __init__(self, data):

self.data =

def push(self,elm):

def pop(self):

self.data.pop()

def len(self):

return len(self.data)

def is_empty(self):

return len(self)== 0

題目:請使用**實現判斷表示式中小括號是否匹配的功能。如果匹配返回true,否則返回false。比如(x * (y +z)) +10中,小括號是匹配的。而(a + b) * )c - d中小括號是不匹配的。

遍歷表示式每乙個字元

完整**實現如下

def match_parentthese(erp):

data = stack()

for ele in erp:

if ele == "(":

data.push(ele)

elif ele == ")":

if data.is_empty():

return false

break

else:

data.pop()

else:

pass

if data.is_empty():

return true

else:

return false

佇列和棧的使用

都這個點,雖然很想回去,還是堅持下來寫寫總結,不然之前的努力就都白費了。1 棧加上 stack 的標頭檔案,常用的函式有 stackp p.top p.size p.empty p.push p.pop 2 佇列 加上的標頭檔案,常用的函式有 queueq q.front q.back p.size...

棧和堆的使用

棧和堆的使用方法 棧 1.對於頻繁使用的程式 原因是由於使用之後就自動解散 2.對於開闢較小的空間,原因棧本身的記憶體不到1兆 3.棧對於開闢的空間和釋放空間都是系統自己完成,和函式的壽命週期有關 4.棧開闢空間效率較高,原因是不需要頭部和尾部空間 5.棧的存放方式是由高到低,出的時候是先進後出 6...

C STL 棧和佇列的使用

一 棧 棧的定義在標頭檔案中,stack 模板類需要兩個模板引數,乙個是元素型別,乙個容器型別,但只有元素型別是必要的,在不指定容器型別時,預設的容器型別為deque。定義stack 物件的示例 如下 stacks1 stacks2 stack的基本操作有 對於stacks 入 棧 s.push x...