# 構建棧
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...