日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python 栈和队列_Python实现栈和队列的简单操作方法示例

發布時間:2025/3/20 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 栈和队列_Python实现栈和队列的简单操作方法示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例講述了Python實現棧和隊列的簡單操作方法。分享給大家供大家參考,具體如下:

先簡單的了解一下數據結構里面的棧和堆:

棧和隊列是兩種基本的數據結構,同為容器類型。兩者根本的區別在于:

stack:后進先出

queue:先進先出

stack和queue是不能通過查詢具體某一個位置的元素而進行操作的。但是他們的排列是按順序的

對于stack我們可以使用python內置的list實現,因為list是屬于線性數組,在末尾插入和刪除一個元素所使用的時間都是O(1),這非常符合stack的要求。當然,我們也可以使用鏈表來實現。

stack的實現代碼(使用python內置的list),實現起來是非常的簡單,就是list的一些常用操作

class Stack(object):

def __init__(self):

self.stack = []

def push(self, value): # 進棧

self.stack.append(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]

我們定義如下的鏈表來實現隊列數據結構:

定義一個頭結點,左邊指向隊列的開頭,右邊指向隊列的末尾,這樣就可以保證我們插入一個元素和取出一個元素都是O(1)的操作,使用這種鏈表實現stack也是非常的方便。實現代碼如下:

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!')

希望本文所述對大家Python程序設計有所幫助。

總結

以上是生活随笔為你收集整理的python 栈和队列_Python实现栈和队列的简单操作方法示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。