特點在於只能允許在容器的一端(稱為棧頂端指標,英語:top)進行加入資料(英語:push)和輸出資料(英語:pop)的運算。
後進先出(lifo, last in first out)
棧描述的是操作,線性表描述的是資料存放鍊錶:操作頭部;順序表:操作尾部
return self.__list 是不太合適的
class
stack
(object):
def__init__
(self)
: self.__list =
defpush
(self,item)
:def
pop(self)
:return self.__list.pop(
)def
peek
(self)
:if self.__list:
return self.__list[-1
]else
:return
none
defis_empty
(self)
:return self.__list ==
defsize
(self)
:return
len(self.__list)
if __name__ ==
"__main__"
: s = stack(
) s.push(1)
s.push(2)
s.push(3)
s.push(4)
print
(s.pop())
print
(s.pop())
print
(s.pop())
print
(s.pop(
))
佇列(queue)是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。
先進先出的(first in first out)
雙端佇列中的元素可以從兩端彈出,其限定插入和刪除操作在表的兩端進行。雙端佇列可以在佇列任意一端入隊和出隊。
class
dequeue
(object):
def__init__
(self)
: self.__list =
defadd_front
(self,item)
: self.__list.insert(
0,item)
defadd_rear
(self,item)
:def
pop_front
(self)
:return self.__list.pop(0)
defpop_rear
(self)
:return self.__list.pop(
)def
is_empty
(self)
:return self.__list ==
defsize
(self)
:return
len(self.__list)
05 資料結構與演算法 佇列
created by chen da 佇列類似生活中的排隊,為fifo結構。兩個基本操作 入隊push和出隊pop。用單鏈表可以實現,雙鏈表雖然可以,但是操作比較複雜。先實現乙個單鏈表 class node object def init self,value none,next none self...
資料結構 05 棧和佇列
棧和佇列主要用於儲存臨時資料,例如階乘計算時的入棧保護。棧 先進後出 filo 佇列 先進先出 fifo python中線性表可以作為棧和佇列的實現結構,list本身可以實現所有棧的操作,但是有些操作是棧沒有的,但是list可以,所以為了資料的安全性有必要對列表做一次外層的封裝來約束資料操作。cla...
佇列 棧(資料結構與演算法)
佇列是一種先進先出 fifo 的資料結構,從隊尾進,從隊頭出 在 fifo 資料結構中,將首先處理新增到佇列中的第乙個元素。如上圖所示,佇列是典型的 fifo 資料結構。插入 insert 操作也稱作入隊 enqueue 新元素始終被新增在佇列的末尾。刪除 delete 操作也被稱為出隊 deque...