首頁 >後端開發 >Python教學 >python如何實作堆疊與佇列的實例詳解

python如何實作堆疊與佇列的實例詳解

伊谢尔伦
伊谢尔伦原創
2017-06-28 13:50:281733瀏覽

這篇文章主要介紹了python實作堆疊與佇列的方法,包含了堆疊與佇列的定義方法及常用操作,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了python實作堆疊與佇列的方法。分享給大家供大家參考。具體分析如下:

1、python實作堆疊,可先將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;

再寫一個程式文件,stacktest.py,使用堆疊,內容如下:
 

#!/usr/bin/python   
from stack import Stack  
s=Stack(20);  
for i in range(3):  
    s.push(i);  
s.pop()  
print
 s.isempty();

2、python 實作佇列:

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();


#

以上是python如何實作堆疊與佇列的實例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn