日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2025/3/20 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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实现栈和队列的简单操作方法示例的全部內容,希望文章能夠幫你解決所遇到的問題。

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