python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】


Posted in Python onOctober 24, 2019

本文实例讲述了python栈的基本定义与使用方法。分享给大家供大家参考,具体如下:

# -*- coding:utf-8 -*-
#! python3
#在?C的设计中,我们需要定义一个实例属性top。三个实例方法:获取栈顶元素peek();出?Cpop();入栈push()
#栈的效果:先进后出
class Node(object):  ##节点,包括两个属性,一个是节点的值,一个是节点的下一个指向
 def __init__(self,value):
  self.value = value   #赋值给节点
  self.next = None   #节点的下一个指向
class stack(object):
 def __init__(self):
  self.top = None    #创建栈,赋予top栈顶属性,top初始为空
 def peek(self):     #获取栈顶的元素,返回对应的值
  if self.top!= None:   #如果栈顶不为空,也就是说栈里有数据
   return self.top.value #那就直接返回栈顶的值
  else:
   return None    #如果栈里无数据,则返回None
 def push(self,node):    #添加元素到栈(参数包括self和节点的value,node)
  if node != None:    #如果加入的节点,不为空
   packNode = Node(node)  #实例化Node类
   packNode.next = self.top #将新增的节点的指向赋值为栈顶的指向
   self.top = packNode   #将栈顶的节点,赋值为新增节点
   return packNode.value  #返回节点的值
  else:
   return None    #返回None
 def pop(self):     #出栈
  if self.top == None:  #如果栈是空的
   return None    #返回None
  else:
   tmp = self.top.value  #将栈顶的值传给tmp
   self.top = self.top.next #将栈顶指向变为目前栈顶的下一个节点
   return tmp     #返回出栈的节点的值
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)

运行结果:

1
2
3
3
4
4
3
2
1

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

Python 相关文章推荐
Python使用Paramiko模块编写脚本进行远程服务器操作
May 05 Python
Linux RedHat下安装Python2.7开发环境
May 20 Python
python操作列表的函数使用代码详解
Dec 28 Python
python找出完数的方法
Nov 12 Python
值得收藏,Python 开发中的高级技巧
Nov 23 Python
python linecache 处理固定格式文本数据的方法
Jan 08 Python
Python批量生成幻影坦克图片实例代码
Jun 04 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
python3反转字符串的3种方法(小结)
Nov 07 Python
Python如何使用BeautifulSoup爬取网页信息
Nov 26 Python
python 实现从高分辨图像上抠取图像块
Jan 02 Python
Python使用socket_TCP实现小文件下载功能
Oct 09 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
Oct 24 #Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
Oct 24 #Python
Windows下PyCharm2018.3.2 安装教程(图文详解)
Oct 24 #Python
python实现获取单向链表倒数第k个结点的值示例
Oct 24 #Python
python模块导入的方法
Oct 24 #Python
python读取word 中指定位置的表格及表格数据
Oct 23 #Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
Oct 23 #Python
You might like
将文件夹压缩成zip文件的php代码
2009/12/14 PHP
《PHP编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
2017/03/15 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
JavaScript QueryString解析类代码
2010/01/17 Javascript
一个分享按钮的插件使用介绍(可扩展,内附开发制作流程)
2011/09/19 Javascript
jQuery获取Select选择的Text和Value(详细汇总)
2013/01/25 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
一个封装js代码-----展开收起效果示例
2013/07/03 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
2015/05/08 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
security.js实现的RSA加密功能示例
2018/06/06 Javascript
微信小程序控制台提示warning:Now you can provide attr "wx:key" for a "wx:for" to improve performance解决方法
2019/02/21 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
Python实战购物车项目的实现参考
2019/02/20 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
Python控制Firefox方法总结
2019/06/03 Python
如何基于Python批量下载音乐
2019/11/11 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
Python局部变量与全局变量区别原理解析
2020/07/14 Python
Python实现手绘图效果实例分享
2020/07/22 Python
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
what is the difference between ext2 and ext3
2013/11/03 面试题
教育技术学专业职业规划书
2014/03/03 职场文书
团支部推优材料
2014/05/21 职场文书
项目经理任命书范本
2014/06/05 职场文书
骨干教师考核评语
2014/12/31 职场文书
志愿者个人总结
2015/03/03 职场文书
检察院起诉书
2015/05/20 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书