昨天嘗試了python的鍊錶操作,一時意猶未盡,就連續寫了幾行python堆疊與佇列的**。當然python作為高階語言,一般都要使用到類。在抒寫**之前,首先要對堆疊和佇列兩種資料結構進行分析,提取出各自類的特徵屬性(資料和方法)。
class stack:
def __init__(self,.top.):
# top指標
def push(self,data):
#data入棧
def pop(self):
#data 出棧
return data
def isempty(self):
#堆疊判空
以上是堆疊類的簡易**,裡面的資料和方法都是堆疊的基本特徵和操作。同樣依據這一方法,給出如下的queue類的簡易**:
需要說一句的是,queue類的實現採用了和stack類一樣的模式方法,但是這不是唯一一種,用兩個stack來模仿queue也未嘗不可,僅需要queue類中例項化2個stack(s1,s2),剩下的所有操作皆可由s1、s2配合完成。**也非常簡單,就不貼出來了....class stack:
def __init__(self,head.tail):
# head 節點
# tail 節點
def enqueue(self,data):
#data入對
def dequeue(self):
#data 出對
return data
def isempty(self):
#佇列判空
class mystack:
def __init__(self,top = 0):
self.top = top
self.size = 0
def push(self, data):
tmp_node = node(data, none)
if self.size == 0:
self.top = tmp_node
self.size += 1
return
tmp_node.p_next = self.top
self.top = tmp_node
self.size += 1
def pop(self):
if self.isempty():
print "the stack is already empty!"
return
tmp_value = self.top.data
self.top = self.top.p_next
self.size -= 1
return tmp_value
def isempty(self):
return self.top is none
class myqueue:
def __init__(self, head = 0, tail = 0):
self.head = head
self.tail = tail
self.size = 0
def enqueue(self,data):
tmp_node = node(data, none)
if self.isempty():
self.head = tmp_node
self.tail = tmp_node
self.head.p_next = self.tail
self.tail.p_next = none
self.size += 1
return
self.tail.p_next = tmp_node
self.tail = self.tail.p_next
self.size += 1
def dequeue(self):
if self.isempty():
print "queue is empty!"
return
tmp_data = self.head.data
self.head = self.head.p_next
self.size -= 1
return tmp_data
def isempty(self):
return self.size == 0
堆疊與佇列
堆疊與佇列可以用陣列實現,也可以用鍊錶實現。下文統一用鍊錶實現上述資料結構。堆疊服從先進後出原則,只對棧頭進行刪除和插入操作,即封鎖了鍊錶的一端,只對鍊錶的另一端進行操作,就形成了邏輯上的堆疊結構。節點 public class stacknode 堆疊實現 public class stackli...
佇列與堆疊
兩個線性資料結構 堆疊 stack 和佇列 queue 堆疊中元素具有後進先出lifo last in fisrt out 而佇列中的元素確實先進先出fifo fisrt in last out define maxsize 50 define false 0 define true 1 typed...
python實現堆疊 佇列
一 利用python列表實現堆疊和佇列 堆疊 堆疊是乙個後進先出的資料結構,其工作方式就像生活中常見到的直梯,先進去的人肯定是最後出。後進先出 class stack def init self,size self.size size self.stack self.top 1 defpush se...