Python資料結構之「棧」與「佇列」

2022-06-27 07:18:09 字數 1733 閱讀 5923

棧(stacks):

·定義:是一種只能通過訪問其一端來實現的資料儲存於檢索的線性資料結構,具有後進先出(last in first out,lifo)的特徵

·主要操作:

1. stack():建立乙個空物件

2. push():把乙個元素新增到棧的最頂層

3. pop():刪除棧最頂層的元素,並返回這個元素

4. peek():返回最頂層的元素,但不刪除它

5. isempty():判斷棧是否為空

6. size():返回棧中元素的個數

·模擬棧的實現:

class stack:

#模擬棧

def __init__(self):

self.items =

def isempty(self):

return len(self.items)==0

def push(self,item):

def pop(self):

#list.pop()方法:移除最後乙個元素,並且返回這個值

return self.items.pop()

def peek(self):

if not self.isempty():

return self.items[len(self.items)-1]

def size(self):

return len(self.items)

#建立乙個棧物件,並加入操作方法

s = stack()

print(s.isempty())

s.push(4)

s.push('dog')

print(s.peek())

s.push(true)

print(s.size())

print(s.isempty())

s.push(8.4)

print(s.pop())

print(s.pop())

print(s.size())

佇列(queue):

·定義:佇列是一種具有先進先出特徵的線性資料結構,元素的增加只能在一端進行,元素的刪除只能在另一端進行;能夠增加元素的佇列一端為隊尾,可以刪除元素的佇列一端則稱為隊首

·主要操作:

1. queue():定義乙個空佇列

2. enqueue(item):在隊尾插入乙個資料,無返回值

3. dequeue():刪除佇列中的元素(佇列頭部資料)

4. isempty():檢測佇列是否為空。無引數,返回布林值。

5. size():返回佇列資料項的數量。無引數,返回乙個整數。

·模擬實現佇列:

class queue:

def __init__(self):

self.items =

def isempty(self):

return len(self.items)==

def enqueue(self,item):

self.items.insert(0,item)

# 移除

def dequeue(self):

return self.items.pop()

# 返回佇列長度

def size(self):

return len(self.itmes)

佇列 與 棧的區別:乙個是 先進先出(佇列),乙個是 後進先出(棧)

佇列 與 棧相同點:都是線性資料結構

資料結構之棧與佇列

寫在前面 棧與佇列是兩種不同特點的資料結構。棧遵循著先進後出的特點,它就像乙個器皿,先放進去的後被取出來,後放進去也就是靠近瓶口的先出來。佇列,就像它的名字一般,它的結構類似於排隊,先進先出,後進後出。棧的實現package stack public class mystack public mys...

資料結構之棧與佇列

順序棧儲存結構 define stack size 50 typedef structstack 順序棧初始化 void initstack stack s 順序進棧 int push stack s,type x 順序棧出棧 int pop stack s,type x 鏈棧儲存結構 typede...

資料結構 之 棧與佇列

順序表實現 class stack object 棧 def init self self.list 選用順序表或鍊錶 defpush self,item 壓棧 self.時間複雜度o 1 self.list.insert 0,item 頭部插入,時間複雜度o n 說明 鍊錶結構的話,頭部插入。de...