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...