堆疊 佇列 雙端佇列實現

2021-10-06 02:23:23 字數 2558 閱讀 5998

__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入隊時,先要將隊尾的所有...