用python實現棧:
棧的儲存順序是先入後出。
class stack(object):
def __init__(self):
self.stack =
def push(self, value): # 進棧
def pop(self): #出棧
if self.stack:
self.stack.pop()
else:
raise lookuperror('stack is empty!')
def is_empty(self): # 如果棧為空
return bool(self.stack)
def top(self):
#取出目前stack中最新的元素
return self.stack[-1]
用python實現佇列:
佇列:先進先出
class head(object):
def __init__(self):
self.left = none
self.right = none
class node(object):
def __init__(self, value):
self.value = value
self.next = none
class queue(object):
def __init__(self):
#初始化節點
self.head = head()
def enqueue(self, value):
#插入乙個元素
newnode = node(value)
p = self.head
if p.right:
#如果head節點的右邊不為none
#說明佇列中已經有元素了
#就執行下列的操作
temp = p.right
p.right = newnode
temp.next = newnode
else:
#這說明隊列為空,插入第乙個元素
p.right = newnode
p.left = newnode
def dequeue(self):
#取出乙個元素
p = self.head
if p.left and (p.left == p.right):
#說明佇列中已經有元素
#但是這是最後乙個元素
temp = p.left
p.left = p.right = none
return temp.value
elif p.left and (p.left != p.right):
#說明佇列中有元素,而且不止乙個
temp = p.left
p.left = temp.next
return temp.value
else:
#說明隊列為空
#丟擲查詢錯誤
raise lookuperror('queue is empty!')
def is_empty(self):
if self.head.left:
return false
else:
return true
def top(self):
#查詢目前佇列中最早入隊的元素
if self.head.left:
return self.head.left.value
else:
raise lookuperror('queue is empty!')
以上引用 學習筆記 資料結構07 佇列
佇列是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。佇列是一種先進先出的線性表,簡稱fifo。允許插入的一端稱為隊尾,允許刪除的一端稱為隊頭。同樣是線性表,佇列也有類似線性表的各種操作,不同的就是插入資料只能在隊尾進行,刪除資料只能在隊頭進行。adt 佇列 queue data 同線性表...
redis學習筆記三(佇列功能)
常用命令 blpop刪除,並獲得該列表中的第一元素,或阻塞,直到有乙個可用 brpop刪除,並獲得該列表中的最後乙個元素,或阻塞,直到有乙個可用 brpoplpush lindex獲取乙個元素,通過其索引列表 linsert在列表中的另乙個元素之前或之後插入乙個元素 llen獲得佇列 list 的長...
資料結構 C語言版 系列三 佇列
佇列是一種先進先出的線性表,它只允許在表的一端進行插入,而在另一端刪除元素。這和我們日常生活中的排隊是一致的,最早進入佇列的元素最早離開。在佇列中,允許插入的一端叫做隊尾 rear 允許刪除的一段則稱為隊頭 front 假設隊列為q a1,a2,an 則a1就是隊頭元素,an是隊尾元素。除了棧和佇列...