該書隨書原始碼的語言為c;我參考書中內容和配套原始碼,寫了一套python格式的配套原始碼。這套配套原始碼並非直接翻譯c語言的配套原始碼,而是結合我的理解略作了修改。 【github專案位址】
class
stack
:"""棧的結構定義"""
def__init__
(self)
:"""初始化乙個空棧"""
pass
def__len__
(self)
:"""返回棧內元素數量"""
pass
defis_empty
(self)
:"""返回棧是否為空棧"""
pass
defclear
(self)
:"""清空棧"""
pass
deftop
(self)
:"""若棧存在且非空,則返回棧頂元素"""
pass
defpush
(self, value)
:"""若棧存在,則插入新元素value到棧中並成為棧頂元素"""
pass
defpop
(self)
:"""若棧存在,則刪除棧頂元素並返回其值"""
pass
from stack.stack import stack
class
arraystack
(stack)
:"""順序儲存結構的棧(python列表儲存)"""
def__init__
(self)
:"""初始化乙個空棧"""
super()
.__init__(
) self._data =
def__len__
(self)
:"""返回棧內元素數量"""
return
len(self._data)
defis_empty
(self)
:"""返回棧是否為空棧"""
return
len(self._data)==0
defclear
(self)
:"""清空棧"""
self._data.clear(
)def
top(self)
:"""若棧存在且非空,則返回棧頂元素"""
if self.is_empty():
raise valueerror(
"stack is empty"
)return self._data[-1
]def
push
(self, value)
:"""若棧存在,則插入新元素value到棧中並成為棧頂元素"""
defpop
(self)
:"""若棧存在,則刪除棧頂元素並返回其值"""
if self.is_empty():
raise valueerror(
"stack is empty"
)return self._data.pop(
)
singlylinkednode(單鏈表結點)
from linkedlist.singlylinkednode import singlylinkednode
from stack.stack import stack
class
linkedstack
(stack)
:"""鏈式儲存結構的棧(單鏈表儲存)"""
def__init__
(self)
:super()
.__init__(
) self._head =
none
# 頭指標
self._size =
0# 棧中元素的數量
def__len__
(self)
:"""返回棧中元素的數量"""
return self._size
defis_empty
(self)
:"""返回棧是否為空"""
return self._size ==
0def
clear
(self)
:"""清空棧"""
self._head =
none
self._size =
0def
push
(self, value)
:"""向棧中壓入元素"""
self._head = singlylinkednode(value, self._head)
# 構造鍊錶物件
self._size +=
1def
top(self)
:"""查詢棧頂元素"""
if self.is_empty():
raise valueerror(
"stack is empty"
)return self._head.value
defpop(self)
:"""取出棧頂元素"""
if self.is_empty():
raise valueerror(
"stack is empty"
) ans = self._head.value
self._head = self._head.
next
self._size -=
1return ans
資料結構原始碼(二)棧ADT
棧adt結構是lifo last input first output,後進先出 使用鍊錶的形式即限制了鍊錶的 入棧和出棧 訪問只能在尾結點進行。include using namespace std typedef int elementtype struct node typedef struc...
大話資料結構 順序棧
main.cpp 順序棧 created by maggie on 18 8 21.include using namespace std define maxsize 100 typedef int selemtype typedef struct sqstack void initstack s...
資料結構與演算法 棧模型(原始碼)!
這篇是繼線性表,鍊錶,哈夫曼樹後的第四篇,資料結構複習性隨筆。本篇將帶您重溫棧模型的魅力。棧簡單說就是 後進先出 本篇給出兩了完美執行的程式,分別是 棧結構和鏈棧結構。偶覺得熟練運用這兩了程式棧基本也就掌握了。下面是原始碼 include iostream define max 1024 defin...