欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)的棧(Stack)

 更新時間:2018年01月26日 16:36:12   作者:BenCotreJohnson  
棧作為一種數(shù)據(jù)結(jié)構(gòu),是一種只能在一端進(jìn)行插入和刪除操作。這篇文章給大家介紹了Python實現(xiàn)的棧(Stack)的相關(guān)資料,感興趣的朋友一起看看吧

前言

Python本身已有順序表(List、Tupple)的實現(xiàn),所以這里從棧開始。

什么是棧

想象一摞被堆起來的書,這就是棧。這堆書的特點是,最后被堆進(jìn)去的書,永遠(yuǎn)在最上面。從這堆書里面取一本書出來,取哪本書最方便?肯定是最上面那本。棧這種數(shù)據(jù)結(jié)構(gòu)的特點就是如此:后進(jìn)先出(Last In First Out - LIFO),即最后被堆進(jìn)去的數(shù)據(jù),最先被拿出來。

棧的Python實現(xiàn)

??梢杂庙樞虮矸绞綄崿F(xiàn),也可以用鏈表方式實現(xiàn)。我大Python的內(nèi)建數(shù)據(jù)結(jié)構(gòu)太強大,可以用list直接實現(xiàn)棧,簡單快捷。人生苦短,我用Python。代碼如下:

class Stack(object):
  # 初始化棧為空列表
  def __init__(self):
    self.items = []
  # 判斷棧是否為空,返回布爾值
  def is_empty(self):
    return self.items == []
  # 返回棧頂元素
  def peek(self):
    return self.items[len(self.items) - 1]
  # 返回棧的大小
  def size(self):
    return len(self.items)
  # 把新的元素堆進(jìn)棧里面(程序員喜歡把這個過程叫做壓棧,入棧,進(jìn)棧……)
  def push(self, item):
    self.items.append(item)
  # 把棧頂元素丟出去(程序員喜歡把這個過程叫做出?!?
  def pop(self, item):
    return self.items.pop()
if __name__ == __main__:
  # 初始化一個棧對象
  my_stack = Stack()
  # 把'h'丟進(jìn)棧里
  my_stack.push('h')
  # 把'a'丟進(jìn)棧里
  my_stack.push('a')
  # 看一下棧的大?。ㄓ袔讉€元素)
  print my_stack.size()
  # 打印棧頂元素
  print my_stack.peek()
  # 把棧頂元素丟出去,并打印出來
  print my_stack.pop()
  # 再看一下棧頂元素是誰
  print my_stack.peek()
  # 這個時候棧的大小是多少?
  print my_stack.size()
  # 再丟一個棧頂元素
  print my_stack.pop()
  # 看一下棧的大小
  print my_stack.size
  # 棧是不是空了?
  print my_stack.is_empty()
  # 哇~真好吃~
  print 'Yummy~'

Tips:

看完上面的代碼,聰明的同學(xué)一定知道了,Python里面實現(xiàn)棧,就是把list包裝成一個類,再添加一些方法作為棧的基本操作。其他的數(shù)據(jù)結(jié)構(gòu)在Python中也是以類似的方式實現(xiàn)的。
那么,這里有一些有的沒的要說一下~

如果希望items[]是Stack類私有的屬性,這樣做就好了:

def __init__(self):
  self.__items = []

沒錯,就是在items前面加兩個下劃線__,在Python中,類的私有成員就是這樣定義噠~

如果希望限定Stack類的成員只有items,不要其他的怪蜀黍亂加成員,那么這樣做就好了:

class Stack(object):
  __slots__ = ('__items')

  def __init__(self):
    self.__items = []

這樣就安全多啦~

Python并沒有Java里的public/private/protected這樣的修飾符,因為Python的設(shè)計者認(rèn)為,“大家都是成年人了”~

總結(jié)

以上所述是小編給大家介紹的Python實現(xiàn)的棧(Stack),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論