__author__ =
"hao rui chun"
class
stack
(object):
def__init__
(self)
: self._lis =
defpush
(self,item)
:"""入棧"""
defpop
(self)
:"""出棧"""
self._lis.pop(
)def
peek
(self)
:"""獲取棧頂元素"""
if self._lis:
return self._lis[-1
]else
:return
defisempty
(self)
:return self._lis ==
none
defsize
(self)
:return
len(self._lis)
if __name__ ==
'__main__'
: stack = stack(
) stack.push(1)
stack.push(2)
stack.push(3)
stack.push(4)
print
(stack.isempty())
print
(stack.peek(
))
__author__ =
"hao rui chun"
class
queue
(object):
def__init__
(self)
: self._lis =
defenqueue
(self,item)
:"""入隊"""
defdequeue
(self,item)
:"""出隊"""
self._lis.pop(0)
defisempty
(self)
:return self._lis ==
none
defsize
(self)
:return
len(self._lis)
if __name__ ==
'__main__'
: queue = queue(
) queue.enqueue(1)
queue.enqueue(2)
queue.enqueue(3)
queue.enqueue(4)
print
(queue.size(
))
__author__ =
"hao rui chun"
class
double_queue
(object):
"""雙端佇列"""
def__init__
(self)
: self.items =
defis_empty
(self)
:"""判斷佇列是否為空"""
return self.items ==
defadd_front
(self, item)
:"""在隊頭新增元素"""
self.items.insert(
0, item)
defadd_rear
(self, item)
:"""在隊尾新增元素"""
defremove_front
(self)
:"""從隊頭刪除元素"""
return self.items.pop(0)
defremove_rear
(self)
:"""從隊尾刪除元素"""
return self.items.pop(
)def
size
(self)
:"""返回佇列大小"""
return
len(self.items)
if __name__ ==
"__main__"
: deque = double_queue(
) deque.add_front(1)
deque.add_front(2)
deque.add_rear(3)
deque.add_rear(4)
print
(deque.size())
print
(deque.remove_front())
print
(deque.remove_front())
print
(deque.remove_rear())
print
(deque.remove_rear(
))
實現雙端佇列
1.雙端佇列是乙個限定插入和刪除操作的資料結構,具有佇列和棧的性質。2.雙端佇列中的元素可以從兩端彈出,其限定插入和刪除操作在表的兩端進行。3.雙端佇列是指允許兩端都可以進行入隊和出隊操作的佇列,其元素的邏輯結構仍是線性結構。將佇列的兩端分別稱為前端和後端,兩端都可以入隊和出隊。利用python的l...
佇列 雙端佇列
1.佇列 佇列是遵循先進先出 fifo,也稱為先來先服務 原則的一組有序的項。佇列在尾部新增新 元素,並從頂部移除元素。最新新增的元素必須排在佇列的末尾 class queue 向佇列新增元素 enqueue element 檢查佇列是否為空並獲取它的長度 isempty 從佇列移除元素 deque...
用雙端佇列實現單調佇列
單調佇列是指 佇列中元素之間的關係具有單調性,而且,隊首和隊尾都可以進行出隊操作,只有隊尾可以進行入隊操作。以單調不減隊列為例 佇列內的元素 e1,e2,e3.en 存在 e1 e2 e3 en 的關係,所以隊首元素e1一定是最小的元素。與優先佇列不同的是,當有乙個新的元素e入隊時,先要將隊尾的所有...