Python栈的实现方法示例【列表、单链表】

 更新时间:2020年02月22日 10:57:21   作者:授我以驴  
这篇文章主要介绍了Python栈的实现方法,结合实例形式分析了Python基于列表、单链表定义栈的相关操作技巧,需要的朋友可以参考下

本文实例讲述了Python栈的实现方法。分享给大家供大家参考,具体如下:

Python实现栈

  • 栈的数组实现:利用python列表方法

代码如下:

# 列表实现栈,利用python列表方法
class listStack(object):

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

  def is_empty(self):
    return self.items == 0

  def size(self):
    return len(self.items)

  def top(self):
    return self.items[len(self.items)-1]

  def push(self, value):
    return self.items.append(value)

  def pop(self):
    return self.items.pop()
if __name__ =="__main__":
  stack = listStack()
  stack.push("welcome")
  stack.push("www")
  stack.push("jb51")
  stack.push("net")
  print "栈的长度:", stack.size()
  print "\n".join(['%s:%s' % item for item in stack.__dict__.items()]) #打印栈stack所有元素
  print "出栈:",stack.pop()
  print "出栈:",stack.pop()
  print "出栈:",stack.pop()

运行结果:

栈的长度: 4
items:['welcome', 'www', 'jb51', 'net']
出栈: net
出栈: jb51
出栈: www

  • 栈的链表实现:

栈的链表实现中,压栈(push)类似于在单链表中表头添加节点;出栈(pop)类似于链表中表头删除节点并返回对应节点值;栈顶元素(top)就是获取链表中的第一个元素

链表节点的定义直接嵌套在链表栈类中

代码如下:

# 链表实现栈
class linkedStack(object):

  class Node(object):
    def __init__(self, value=None, next=None):
      self.value = value
      self.next = next

  def __init__(self):
    self.top = None
    self.length = 0

  def is_empty(self):
    return self.length == 0

  def size(self):
    return self.length

  # 获取栈顶元素
  def get(self):
    if self.is_empty():
      raise Exception("Stack is empty!")
    return self.top.value

  # 压栈
  def push(self, value):
    node = self.Node(value)
    old_top = self.top
    self.top = node
    node.next = old_top
    self.length += 1

  # 出栈
  def pop(self):
    if self.length == 0:
      raise Exception("Stack is empty!")

    item = self.top.value
    curnode = self.top.next
    self.top.next = self.top
    self.top = curnode
    self.length -= 1
    return item
if __name__ =="__main__":
  stack = linkedStack()
  stack.push("welcome")
  stack.push("www")
  stack.push("jb51")
  stack.push("net")
  print "栈的长度:", stack.size()
  print "出栈:",stack.pop()
  print "出栈:",stack.pop()
  print "出栈:",stack.pop()
  print "出栈:",stack.pop()

运行结果:

栈的长度: 4
出栈: net
出栈: jb51
出栈: www
出栈: welcome

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • Python操作Redis之设置key的过期时间实例代码

    Python操作Redis之设置key的过期时间实例代码

    这篇文章主要介绍了Python操作Redis之设置key的过期时间实例代码,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • python实现的一只从百度开始不断搜索的小爬虫

    python实现的一只从百度开始不断搜索的小爬虫

    这是我第三天学python了, 想写一个东西纪念一下吧,于是写了一直爬虫,但是不是好的虫,只能讲网页的关键词存到本地, 但是我觉得基本上算是一只小虫了
    2013-08-08
  • python skimage图像处理

    python skimage图像处理

    这篇文章主要为大家介绍了python skimage图像处理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • django使用xadmin的全局配置详解

    django使用xadmin的全局配置详解

    今天小编就为大家分享一篇django使用xadmin的全局配置详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • django里面的forms模块详解

    django里面的forms模块详解

    这篇文章主要介绍了django里面的forms模块详解的相关资料,需要的朋友可以参考下
    2023-11-11
  • 浅析Python中的for 循环

    浅析Python中的for 循环

    这篇文章主要介绍了浅析Python中的for 循环的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • 使用python pyserial模块串口通信方式

    使用python pyserial模块串口通信方式

    这篇文章主要介绍了使用python pyserial模块串口通信方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • PyQt5多线程刷新界面防假死示例

    PyQt5多线程刷新界面防假死示例

    今天小编就为大家分享一篇PyQt5多线程刷新界面防假死示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python之字典添加元素的几种方法

    Python之字典添加元素的几种方法

    这篇文章主要介绍了Python之字典添加元素的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • python爬虫开发之PyQuery模块详细使用方法与实例全解

    python爬虫开发之PyQuery模块详细使用方法与实例全解

    这篇文章主要介绍了python爬虫开发之PyQuery模块详细使用方法与实例全解,需要的朋友可以参考下
    2020-03-03

最新评论