python實現(xiàn)堆棧與隊列的方法
更新時間:2015年01月15日 09:33:13 投稿:shichen2014
這篇文章主要介紹了python實現(xiàn)堆棧與隊列的方法,包含了堆棧與隊列的定義方法及常用操作,具有一定參考借鑒價值,需要的朋友可以參考下
本文實例講述了python實現(xiàn)堆棧與隊列的方法。分享給大家供大家參考。具體分析如下:
1、python實現(xiàn)堆棧,可先將Stack類寫入文件stack.py,在其它程序文件中使用from stack import Stack,然后就可以使用堆棧了。
stack.py的程序:
復制代碼 代碼如下:
class Stack():
def __init__(self,size):
self.size=size;
self.stack=[];
self.top=-1;
def push(self,ele): #入棧之前檢查棧是否已滿
if self.isfull():
raise exception("out of range");
else:
self.stack.append(ele);
self.top=self.top+1;
def pop(self): # 出棧之前檢查棧是否為空
if self.isempty():
raise exception("stack is empty");
else:
self.top=self.top-1;
return self.stack.pop();
def isfull(self):
return self.top+1==self.size;
def isempty(self):
return self.top==-1;
def __init__(self,size):
self.size=size;
self.stack=[];
self.top=-1;
def push(self,ele): #入棧之前檢查棧是否已滿
if self.isfull():
raise exception("out of range");
else:
self.stack.append(ele);
self.top=self.top+1;
def pop(self): # 出棧之前檢查棧是否為空
if self.isempty():
raise exception("stack is empty");
else:
self.top=self.top-1;
return self.stack.pop();
def isfull(self):
return self.top+1==self.size;
def isempty(self):
return self.top==-1;
再寫一個程序文件,stacktest.py,使用棧,內(nèi)容如下:
復制代碼 代碼如下:
#!/usr/bin/python
from stack import Stack
s=Stack(20);
for i in range(3):
s.push(i);
s.pop()
print s.isempty();
from stack import Stack
s=Stack(20);
for i in range(3):
s.push(i);
s.pop()
print s.isempty();
2、python 實現(xiàn)隊列:
復制代碼 代碼如下:
class Queue():
def __init__(self,size):
self.size=size;
self.front=-1;
self.rear=-1;
self.queue=[];
def enqueue(self,ele): #入隊操作
if self.isfull():
raise exception("queue is full");
else:
self.queue.append(ele);
self.rear=self.rear+1;
def dequeue(self): #出隊操作
if self.isempty():
raise exception("queue is empty");
else:
self.front=self.front+1;
return self.queue[self.front];
def isfull(self):
return self.rear-self.front+1==self.size;
def isempty(self):
return self.front==self.rear;
q=Queue(10);
for i in range(3):
q.enqueue(i);
print q.dequeue();
print q.isempty();
def __init__(self,size):
self.size=size;
self.front=-1;
self.rear=-1;
self.queue=[];
def enqueue(self,ele): #入隊操作
if self.isfull():
raise exception("queue is full");
else:
self.queue.append(ele);
self.rear=self.rear+1;
def dequeue(self): #出隊操作
if self.isempty():
raise exception("queue is empty");
else:
self.front=self.front+1;
return self.queue[self.front];
def isfull(self):
return self.rear-self.front+1==self.size;
def isempty(self):
return self.front==self.rear;
q=Queue(10);
for i in range(3):
q.enqueue(i);
print q.dequeue();
print q.isempty();
希望本文所述對大家的Python程序設計有所幫助。
相關文章
選擇Python寫網(wǎng)絡爬蟲的優(yōu)勢和理由
在本篇文章里小編給各位整理了一篇關于選擇Python寫網(wǎng)絡爬蟲的優(yōu)勢和理由以及相關代碼實例,有興趣的朋友們閱讀下吧。2019-07-07將Python代碼打包成.exe可執(zhí)行文件的完整步驟
這篇文章主要給大家介紹了關于如何將Python代碼打包成.exe可執(zhí)行文件的完整步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者使用python具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-05-05使用python flask框架開發(fā)圖片上傳接口的案例詳解
剛領導安排任務,需求是這樣的開發(fā)一個支持多格式圖片上傳的接口,并且將圖片壓縮,支持在線預覽圖片,下面小編分享下使用python flask框架開發(fā)圖片上傳接口的案例詳解,感興趣的朋友一起看看吧2022-04-04python中pycryptodome模塊實現(xiàn)加密算法庫
PyCryptodome提供了許多密碼學算法和協(xié)議的實現(xiàn),包括對稱加密、非對稱加密、消息摘要、密碼哈希、數(shù)字簽名等,本文主要介紹了python中pycryptodome模塊實現(xiàn)加密算法庫,感興趣的可以了解一下2023-11-11詳解sklearn?Preprocessing?數(shù)據(jù)預處理功能
這篇文章主要介紹了sklearn?Preprocessing?數(shù)據(jù)預處理功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08pytest內(nèi)置fixture使用臨時目錄流程詳解
fixture是在測試函數(shù)運行前后,由pytest執(zhí)行的外殼函數(shù)。fixture中的代碼可以定制,滿足多變的測試需求,包括定義傳入測試中的數(shù)據(jù)集、配置測試前系統(tǒng)的初始狀態(tài)、為批量測試提供數(shù)據(jù)源等等。fixture是pytest的精髓所在2022-12-12