"""
棧結構 類似於桶 先進後出 fifo=first in last out
棧結構的常用方法:
pop 出棧
push 入棧
size 棧大小
isempty 判斷棧是否為空
top 獲取棧頂元素
"""class stack(object):
def __init__(self):
self.__stack =
def push(self, value):
def pop(self, value=none):
if value:
if value in self.__stack:
while true:
if value == self.__stack.pop():
return value
else:
raise valueerror("數值不存在,不能出棧")
else:
if not self.isempty():
return self.__stack.pop()
else:
raise valueerror("數值不存在,不能刪")
def size(self):
return len(self.__stack)
def isempty(self):
return self.size() == 0
# return true if len(self.__stack) == 0 else false
def top(self):
return self.pop()
stack = stack()
stack.isempty()
stack.push('a')
stack.push('b')
stack.push('c')
stack.push('d')
print(stack.pop('c'))
print(stack.size())
"""佇列結構 類似於 管道,先進先出, fifo=first in first out
佇列的常用方法
出隊入隊
佇列長度
佇列是否為空
"""class queue(object):
def __init__(self):
self.__queue =
def isempty(self):
return self.__queue ==
def size(self):
return len(self.__queue)
def enqueue(self, value):
# 入隊
self.__queue.insert(0, value)
def dequeue(self):
# 出隊
self.__queue.pop()
# self.__queue.pop(0)
q = queue()
q.enqueue('a')
q.enqueue('b')
q.enqueue('c')
q.enqueue('d')
print(q.size())
print(q.dequeue())
# 雙端佇列
class queue(object):
def __init__(self):
self.__queue =
def isempty(self):
return len(self.__queue) == 0
def size(self):
return len(self.__queue)
def l_enqueue(self, value):
self.__queue.insert(0, value)
def r_dequeue(self):
return self.__queue.pop()
def r_enqueue(self, value):
def l_dequeue(self):
return self.__queue.pop(0)
q = queue()
q.l_enqueue('a')
q.l_enqueue('b')
q.r_enqueue('c')
q.r_enqueue('d')
# bacd
print(q.size())
print(q.r_dequeue())
print(q.r_dequeue())
print(q.l_dequeue())
print(q.l_dequeue())
# 出棧順序:dcba
python棧和佇列
類的定義 設計類 類名 屬性 行為 定義乙個女朋友 屬性 身高170,年齡20,性別 女 膚色 白 行為 中的定義 格式 class 類名 父類列表 屬性1屬性2 行為1 方法 行為2乙個類是以class關鍵字開始的 類名需要遵循識別符號命名規則,見名知意 首字母大寫 屬性需要遵循識別符號命名規則,...
python 棧和佇列
使用list實現棧,使用deque實現佇列 使用list實現佇列效率低 1.使用list實現棧 先進後出 class stack 使用列表實現棧 def init self,lis self.lis lis def pop self,args 1 return self.lis.pop args 返...
python小知識 佇列和棧
佇列可以做兩端增刪資料元素 佇列中的資料元素遵循 先進先出 的原則,也稱為fifo結構 first in first out 從空佇列中彈出資料和向滿佇列中壓入資料,均視為錯誤 class squeue 建立空佇列 def init self self.elem 判空 defis empty sel...