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