python完成棧的基本操作,壓棧,出棧 計算棧長

2021-10-02 03:13:08 字數 3186 閱讀 8468

在python中不存在指標,所有需要進行鏈棧的操作時,自己初始化乙個棧的結點類,其中定義棧每乙個結點的屬性,乙個next,乙個資料;後邊的佇列和二叉樹的完成使用同樣的原理,自己定義每乙個資料結構的結點屬性值

順序棧的操作

'''棧的基本操作'''

class

stacklist

(object):

def__init__

(self)

: self._item =

#判斷是否為空

defis_empty

(self)

:return self._item ==

#出棧def

put(self)

:return self._item.pop(

)#入棧

defpush

(self,_stack)

:#拿取棧頂元素

defpeek

(self)

:return self._item[

len(self._item)-1

]#計算棧的長度

defsize

(self)

:return

len(self._item)

if __name__ ==

'__main__'

: s=stacklist(

)print

('初始棧是否為空:'

,s.is_empty())

s.push(

"a")

s.push(

"b")

s.push(

"c")

s.push(

"d")

s.push(

"e")

s.push(

"f")

print

('進棧之後判斷是否為空:'

,s.is_empty())

print

('棧的長度:'

,s.size())

print

('棧頂元素:'

,s.peek())

print

('出棧元素:'

,s.put())

print

('出棧之後的棧頂元素:'

,s.peek(

))

鏈棧的基本操作

'''鏈棧的完成'''

#定義鏈棧的結點

class

stacknode

(object):

def__init__

(self)

: self._stadata =

none

self._stanext =

none

class

stack

(object):

def__init__

(self)

:#初始化乙個top指標

self._top = stacknode(

)# 初始化乙個棧元素個數變數

self._size =

0#判棧空

defis_empty

(self)

:if self._top ==

none

:return

true

else

:return

false

#棧元素個數

defsizestack

(self)

:return self._size

#進棧defpushstack

(self,stack_data)

:#定義乙個棧結點

stacknode = stacknode(

)#進棧的元素賦值

stacknode._stadata = stack_data

#元素指標移動

stacknode._stanext = self._top._stanext

#top指標指向加入的元素

self._top._stanext = stacknode

#棧元素個數+1

self._size +=

1return

#出棧def

putstack

(self)

:#判斷棧是否為空

if self.is_empty():

return

'there is no element'

else

:#出棧元素為top指標的next指向的元素

stacknode = self._top._stanext

#top指標移動

self._top._stanext = stacknode._stanext

#棧元素個數-1

self._size -=

1#返回出棧元素

return stacknode._stadata

#獲取棧頂元素

defpeekstack

(self)

:#判斷棧是否為空

if self.is_empty():

return

'there is no element'

else

:return self._top._stadata

if __name__ ==

'__main__'

: s = stack(

) count =

0for i in

range

(ord

('a'),

ord(

'z')+1

):count +=

1 s.pushstack(

chr(i)

)print

('進棧完棧元素個數:'

,s.sizestack())

print

('出棧元素:'

,end='')

for i in

range(1

,count+1)

:print

(s.putstack(

),end=

' ')

print

('\n出棧完棧元素個數:'

, s.sizestack(

))

資料結構 完成順序棧,鏈式棧的基本操作

seqstack.h pragma once include define title printf n s n function typedef char seqstacktype typedef struct seqstack seqstack void seqstackinit seqstac...

函式壓棧及協議棧的基本技術

在編譯器編譯檔案的時候,軟體會根據程式本身的要求對函式作不同的壓棧處理。有的壓棧是按照從左到右進行壓棧,有的壓棧是按照從右到左進行壓棧,有的不壓棧 直接用暫存器代替,有的是需要被呼叫函式自身自己平衡堆疊。下面,我們就可以乙個乙個自己看看。首先,隨便寫乙個函式,cpp view plain copy ...

python演算法 實現棧的基本操作

實現乙個棧的資料結構,使其具有 入棧 出棧 取棧頂元素 判斷棧是否為空 獲取棧中元素個數 coding utf 8 陣列實現棧的資料結構 入棧 出棧 取棧頂元素 判斷棧是否為空 獲取棧中元素個數 class mystack 模擬棧 def init self self.items 判斷是否為空 de...