Python實現堆疊與佇列
一,利用python列表實現堆疊
堆疊是一個後進先出的資料結構,其工作方式就像一堆汽車排隊進去一個死衚衕裡面,最先進去的一定是最後出來。
可以設定一個類,用列表來存放棧中元素的資訊,利用列表的append()和pop()方法可以實現棧的出棧pop和入棧push的操作,list.append(obj)意思是向列表新增一個物件obj,list.pop(index=-1)意思是刪除指定位置的物件,預設是最後一個物件,也就是說list.pop(),是刪除列表中下標最大的元素。
程式碼:
class Stack(object):
def __init__(self,size):
self.size = size
self.stack = []
self.top = -1
def push(self,x):
if self.is_full():
raise Exception('Stack is full')
else:
self.stack.append(x)
self.top = self.top + 1
def pop(self):
if self.is_empty():
raise Exception('Stack is empty')
else:
self.top = self.top - 1
self.stack.pop()
def is_full(self):
return self.top + 1 == self.size
def is_empty(self):
return self.top == -1
def show_stack(self):
print(self.stack)
S = Stack(10)
for i in range(5):
S.push(i)
S.show_stack()
for i in range(3):
S.pop()
S.show_stack()
類中有個top屬性,用來指示棧的儲存情況,初始值為1,一旦插入一個元素,其值加1,利用top的值可以判定棧是空還是滿。
二,利用python列表實現佇列
佇列是一種先進先出的資料型別,它的跟蹤原理類似於在超市收銀處排隊,佇列裡的的第一個人首先接受服務,新的元素通過入隊的方式新增到佇列的末尾,而出隊就是將佇列的頭元素刪除。
我們可以設定一個類,用列表來存放棧中元素的資訊,利用列表的append()和pop()方法可以實現佇列的入隊enqueue和出隊dequeue的操作,上面棧一個元素每次出去是列表的最後一個,直接用list.pop()出棧,而出佇列每次是第一個,所以要用list.pop(0)出佇列。
class Queue():
def __init__(self,size):
self.size = size
self.front = -1
self.rear = -1
self.queue = []
def enqueue(self,ele):
if self.is_full():
raise Exception('Queue is full')
else:
self.queue.append(ele)
self.rear = self.rear + 1
def dequeue(self):
if self.is_empty():
raise Exception('Queue is empty')
else:
self.queue.pop(0)
self.front = self.front + 1
def is_full(self):
return self.rear - self.front +1 == self.size
def is_empty(self):
return self.front == self.rear
def show_queue(self):
print(self.queue)
q = Queue(10)
for i in range(5):
q.enqueue(i)
q.show_queue()
for i in range(3):
q.dequeue()
q.show_queue()
print(q.is_empty())
相關文章
- (js佇列,堆疊) (FIFO,LIFO)JS佇列
- 堆疊的實現(1)--靜態陣列陣列
- 堆與優先佇列佇列
- 二叉堆實現優先佇列佇列
- Python佇列的三種佇列實現方法Python佇列
- 佇列 優先順序佇列 python 程式碼實現佇列Python
- java使用PriorityQueue即優先佇列實現大根堆和小根堆Java佇列
- 堆、棧以及佇列佇列
- 全網最適合入門的物件導向程式設計教程:38 Python常用複合資料型別-使用列表實現堆疊、佇列和雙端佇列物件程式設計Python資料型別佇列
- 用JavaScript實現棧與佇列JavaScript佇列
- [雪峰磁針石部落格]Python經典面試題:用3種方法實現堆疊和佇列並示例實際應用場景Python面試題佇列
- Python實現執行緒安全佇列Python執行緒佇列
- Python中堆、棧、佇列之間的區別Python佇列
- 幾道和「堆疊、佇列」有關的面試演算法題佇列面試演算法
- Python 通過List 實現佇列的操作Python佇列
- 通過佇列實現棧OR通過棧實現佇列佇列
- [演算法總結] 6 道題搞定 BAT 面試——堆疊和佇列演算法BAT面試佇列
- 堆和索引堆的python實現索引Python
- 演算法-棧佇列堆演算法佇列
- 6-1 在一個陣列中實現兩個堆疊 (20分)陣列
- 佇列的一種實現:迴圈佇列佇列
- 資料結構-迴圈佇列(Python實現)資料結構佇列Python
- 9. 題目:對佇列實現棧&用棧實現佇列佇列
- 用棧實現佇列佇列
- 用佇列實現棧佇列
- 用 Rust 實現佇列Rust佇列
- 佇列(Queue)-c實現佇列
- 高可用延遲佇列設計與實現佇列
- python資料結構與演算法——棧、佇列與雙端佇列Python資料結構演算法佇列
- thinkphp console 命令列列印錯誤呼叫堆疊PHP命令列
- 鏈式佇列—用連結串列來實現佇列佇列
- Day 10| 232.用棧實現佇列 、 225. 用佇列實現棧佇列
- 堆的原理與實現
- RabbitMQ實現延遲佇列MQ佇列
- RabbitMQ 實現延遲佇列MQ佇列
- Redis實現訊息佇列Redis佇列
- 兩個棧實現佇列佇列
- 平衡堆疊