學習筆記 資料結構(三) 佇列和棧

2021-09-27 08:53:27 字數 1866 閱讀 6072

用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是隊尾元素。除了棧和佇列...