一、利用python列表實現堆疊和佇列
堆疊:
堆疊是乙個後進先出的資料結構,其工作方式就像生活中常見到的直梯,先進去的人肯定是最後出。
#後進先出
class
stack():
def__init__
(self,size):
self.size=size
self.stack=
self.top=-1
defpush(self,x): # 入棧之前檢查棧是否已滿
ifself.isfull():
raise exception("
stack is full")
else
: self.top=self.top+1
defpop(self): # 出棧之前檢查棧是否為空
ifself.isempty():
raise exception("
stack is empty")
else
: self.top=self.top-1self.stack.pop()
defisfull(self):
return self.top+1 ==self.size
defisempty(self):
return self.top == '-1'
defshowstack(self):
(self.stack)
s=stack(10)
for i in range(6):
s.push(i)
s.showstack()
for i in range(3):
s.pop()
s.showstack()
"""類中有top屬性,用來指示棧的儲存情況,初始值為1,一旦插入乙個元素,其值加1,利用top的值樂意判定棧是空還是滿。
執行時先將0,1,2,3,4,5依次入棧,然後刪除棧頂的前三個元素
"""
佇列:
佇列是一種先進先出的資料型別,它的跟蹤原理類似於在超市收銀處排隊,佇列裡的的第乙個人首先接受服務,新的元素通過入隊的方式新增到佇列的末尾,而出隊就是將佇列的頭元素刪除。
上面棧乙個元素每次出去是列表的最後乙個,直接用list.pop()出棧,而出佇列每次是第乙個,所以要用list.pop(0)出佇列
#先進先出
class
queue():
def__init__
(self,size):
self.size=size
self.front=-1self.rear=-1self.queue=
defenqueue(self,ele): # 入隊操作
ifself.isfull():
raise exception("
queue is full")
else
: self.rear=self.rear+1
defdequeue(self): # 出隊操作
ifself.isempty():
raise exception("
queue is empty")
else
: self.queue.pop(0)
self.front=self.front+1
defisfull(self):
return self.rear-self.front+1 ==self.size
defisempty(self):
return self.front ==self.rear
defshowqueue(self):
(self.queue)
q=queue(10)
for i in range(6):
q.enqueue(i)
q.showqueue()
for i in range(3):
q.dequeue()
q.showqueue()
(q.isempty())
"""類中設定兩個屬性分別為front和rear來模擬佇列的頭尾指標,通過它們值的關係可以判定佇列是空還是滿
"""
用python實現佇列,堆疊
stack 堆疊 後進先出 queue佇列 先進先出 fifo first in first out putget queue佇列 先進先出 fifo first in first out put get class queue def init self self.l def put self,i...
python實現堆疊與佇列的方法
1 python實現堆疊,可先將stack類寫入檔案stack.py,在其它程式檔案中使用frwww.cppcns.comom stack import stack,然後就可以使用堆疊了。stack.py的程式 複製 如下 class stack def init self,size self.si...
python 堆疊與佇列
昨天嘗試了python的鍊錶操作,一時意猶未盡,就連續寫了幾行python堆疊與佇列的 當然python作為高階語言,一般都要使用到類。在抒寫 之前,首先要對堆疊和佇列兩種資料結構進行分析,提取出各自類的特徵屬性 資料和方法 class stack def init self,top.top指標 d...