《大話資料結構》配套原始碼 棧(Python版)

2021-10-08 01:44:37 字數 2857 閱讀 6890

該書隨書原始碼的語言為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...