python 棧和佇列

2021-08-22 01:14:29 字數 2396 閱讀 7410

"""

棧結構 類似於桶 先進後出 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...