棧的基礎知識 Python實現

2021-09-11 16:03:49 字數 1672 閱讀 2046

本文首發於我的個人部落格suixin』s blog
棧(stack,堆疊)是限制在表的一端進行插入和刪除運算的線性表,通常稱插入、刪除的這一端為棧頂(top),另一端為棧底(bottom)。先進後出(filo)。top= -1時為空棧,top=0只能說明棧中只有乙個元素,並且元素進棧時top應該自增。

順序儲存棧:順序儲存結構;

鏈棧:鏈式儲存結構。插入和刪除操作僅限制在鏈頭位置上進行。棧頂指標就是鍊錶的頭指標。通常不會出現棧滿的情況。 不需要判斷棧滿但需要判斷棧空;

堆疊溢位一般是迴圈的遞迴呼叫、大資料結構的區域性變數導致的。

時間複雜度

平均:訪問

搜尋插入刪除棧

o(n)

o(n)

o(1)

o(1)

最差:訪問

搜尋插入刪除棧

o(n)

o(n)

o(1)

o(1)

空間複雜度

**最差:**o(n)

使用python中的list可以簡單的實現堆疊。

class

stack

(object):

"""堆疊"""

def__init__

(self)

: self.items =

defis_empty

(self)

:return self.items ==

defpeek

(self)

:"""返回棧頂元素"""

if self.is_empty():

return

return self.items[

len(self.items)-1

]def

push

(self, item)

:"""壓棧"""

defpop

(self)

:"""出棧"""

if self.is_empty():

return

return self.items.pop(

)def

size

(self)

:return

len(self.items)

deftest()

: s = stack(

)print

('棧是否為空:'

, s.is_empty())

print

("壓棧'2'"

) s.push(2)

print

('棧頂為:'

, s.peek())

print

("壓棧'3'"

) s.push(3)

print

("棧頂為:"

, s.peek())

print

("出棧"

) s.pop(

)print

("棧的大小:"

, s.size())

if __name__ ==

'__main__'

: test(

)

資料結構:棧

基礎知識 棧

特點 後進先出 類似於乙個桶.結構定義 棧頂初始化為 1 int data 資料區 int max size,top index 棧頂指標下標入棧 棧頂指標向上移動一位出棧 棧頂指標向下移動一位表示式求值兩個棧,乙個裝數,乙個裝符號.用isdigit 函式分辨他是否為數字0 9 返回值 是 1 否 ...

棧的基礎知識

棧 stack 是一種特殊的線性表,其包括順序棧 seqstack 和鏈式棧 linkedstack 棧的基本操作包括建立棧 判斷棧是否為空 isempty 入棧 push 出棧 pop 和取棧頂元素 get 等,其實現的介面如下所示 public inte ce sstack 1 順序棧 seqs...

棧的基礎知識

棧 棧是限定在表尾進行插入和刪除操作的線性表 佇列是只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。把允許插入和刪除的一端稱為棧頂 top 另一端稱為棧底 bottom 不含任何資料元素的棧稱為空棧。棧又稱為後進先出的線性表。lifo。棧的插入操作,叫做進棧,也稱為壓棧,入棧。子彈入彈夾 ...