Python資料結構與演算法4 棧與佇列

2021-10-04 19:14:07 字數 1754 閱讀 7489

# 構建棧

class

stack

(object):

def__init__

(self)

: self.__list =

defpush

(self, item)

:'''新增乙個新的元素item到棧頂'''

defpop

(self)

:'''彈出棧頂元素'''

return self.__list.pop(

)def

peak

(self)

:'''返回棧頂元素'''

if self.__list:

return self.__list[-1

]else

:return

defis_empty

(self)

:'''判斷棧是否為空'''

return

not self.__list

defsize

(self)

:'''返回棧的元素個數'''

return

len(self.__list)

# 構造雙端佇列

class

deque()

:def

__init__

(self)

: self.__list =

defenqueue

(self, item)

:'''往佇列中新增乙個item元素'''

defdequeue

(self)

:'''從佇列頭部刪除乙個元素'''

return self.__list.pop(0)

defis_empty

(self)

:'''判斷乙個佇列是否為空'''

return

not self.__list

defsize

(self)

:'''返回佇列的大小'''

return

len(self.__list)

# 構造雙端佇列

class

deque()

:def

__init__

(self)

: self.__list =

defadd_front

(self, item)

:'''從隊頭加入乙個item元素'''

self.__list.insert(

0, item)

defadd_rear

(self, item)

:'''從隊尾加入乙個item元素'''

defremove_front()

:'''從隊頭刪除乙個item元素'''

return self.__list.pop(0)

defremove_rear()

:'''從隊尾刪除乙個item元素'''

return self.__list.pop(

)def

is_empty

(self)

:'''判斷乙個佇列是否為空'''

return

not self.__list

defsize

(self)

:'''返回佇列的大小'''

return

len(self.__list)

資料結構與演算法(4)棧

後進者先出,先進者後出,就是典型的 棧 結構。從棧的操作特性上來看,棧是一種 操作受限 的線性表 只允許在一端插入和刪除資料。從功能上來說,陣列或鍊錶可以替代棧,但特定的資料結構是對特定場景的抽象,陣列或鍊錶暴露了太多的操作介面,操作上的確靈活自由,但使用時就比較不可控,自然也就更容易出錯。當某個資...

python資料結構與演算法 棧

逆波蘭表示式 reverse polish notation 有效的運算子包括 每個運算物件可以是整數,也可以是另乙個逆波蘭表示式。輸入 2 1 3 輸出 9 解釋 2 1 3 9 分析 棧 遍歷陣列,逐漸壓入棧中,如果遇到運算字元,則彈出棧頂兩個元素,之後將計算結果再壓入棧中 class solu...

python資料結構與演算法 棧

棧 stack 建立乙個新的空棧 push item 新增乙個新的元素item到棧頂 pop 彈出棧頂元素 peek 返回棧頂元素 is empty 判斷棧是否為空 size 返回棧的元素個數 stack 建立乙個新的空棧 push item 新增乙個新的元素item到棧頂 pop 彈出棧頂元素 p...