溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

python中如何定義與使用棧

發(fā)布時間:2021-07-22 17:14:33 來源:億速云 閱讀:282 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了python中如何定義與使用棧,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

具體如下:

# -*- coding:utf-8 -*-
#! python3
#在桟的設(shè)計中,我們需要定義一個實例屬性top。三個實例方法:獲取棧頂元素peek();出桟pop();入棧push()
#棧的效果:先進(jìn)后出
class Node(object):  ##節(jié)點,包括兩個屬性,一個是節(jié)點的值,一個是節(jié)點的下一個指向
 def __init__(self,value):
  self.value = value   #賦值給節(jié)點
  self.next = None   #節(jié)點的下一個指向
class stack(object):
 def __init__(self):
  self.top = None    #創(chuàng)建棧,賦予top棧頂屬性,top初始為空
 def peek(self):     #獲取棧頂?shù)脑?,返回對?yīng)的值
  if self.top!= None:   #如果棧頂不為空,也就是說棧里有數(shù)據(jù)
   return self.top.value #那就直接返回棧頂?shù)闹?
  else:
   return None    #如果棧里無數(shù)據(jù),則返回None
 def push(self,node):    #添加元素到棧(參數(shù)包括self和節(jié)點的value,node)
  if node != None:    #如果加入的節(jié)點,不為空
   packNode = Node(node)  #實例化Node類
   packNode.next = self.top #將新增的節(jié)點的指向賦值為棧頂?shù)闹赶?
   self.top = packNode   #將棧頂?shù)墓?jié)點,賦值為新增節(jié)點
   return packNode.value  #返回節(jié)點的值
  else:
   return None    #返回None
 def pop(self):     #出棧
  if self.top == None:  #如果棧是空的
   return None    #返回None
  else:
   tmp = self.top.value  #將棧頂?shù)闹祩鹘otmp
   self.top = self.top.next #將棧頂指向變?yōu)槟壳皸m數(shù)南乱粋€節(jié)點
   return tmp     #返回出棧的節(jié)點的值
s = stack()
a = Node(1)
print(s.push(a).value)
print(s.push(2))
print(s.push(3))
print(s.peek())
print(s.push(4))
print(s.pop())
print(s.pop())
print(s.pop())
print(s.pop().value)

運(yùn)行結(jié)果:

1
2
3
3
4
4
3
2
1

上述內(nèi)容就是python中如何定義與使用棧,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI