資料結構必會 棧的思想及實現(Python)

2021-10-20 06:22:05 字數 1216 閱讀 6710

1. 棧是什麼

​ 首先舉個生活中的例子:盛菜時使用的盤子疊在一起擺放時就是一種棧的結構,使用盤子的時候只能拿走最上面的那個,擺放時會把先洗好的那個放在最下面,這也就構成一種先放後拿的思想,也就是我們棧的思想。

​ 棧是乙個有序的集合,它的新增和移除操作總發生在「頂端」(另一端稱為底端),棧中的元素離底端越近,代表其在棧中的時間越長,棧的排序原則被稱作lifo(last-in first-out),具體的實現方式如下圖所示:

2. 棧的實現

# 建立class stack

class

stack

:# 初始化棧

def__init__

(self)

: self.items =

# 判斷棧是否為空

defisempty

(self)

:return self.items ==

# 入棧

defpush

(self, item)

:# 出棧

defpop

(self)

: self.items.pop(

)# 返回棧頂的元素

defpeek

(self)

:return self.items[

len(self.items)-1

]# 返回棧中元素的數目

defsize

(self)

:return

len(self.items)

​ 測試結果如下:

# 測試**

s = stack(

)s.isempty(

)# 輸出

true

# 測試**

s.push(

'i')

s.push(

'like'

)s.push(

'python'

)s.pop(

)s.peek(

)s.size(

)# 輸出

2

資料結構 實現棧

include include include define node len sizeof node 1 pstack ptop pstack pbottom都指向節點 typedef struct node pnode,node typedef struct stack pstack,stack...

資料結構 棧實現

棧和佇列不一樣,棧是後進先出。實現時用了陣列儲存棧,陣列大小根據內容自動擴充。廢話不多說,上 c mystack.h pragma once templateclass mystack templateint mystack getcount templatet mystack top templa...

資料結構 棧的實現

1 定義資料元素類 data package stack public class data override public string tostring 2 定義棧結構類 stacktype package stack public class stacktype 判斷是否空棧 return p...