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简明入门教程
Aug 04 Python
python 实现tar文件压缩解压的实例详解
Aug 20 Python
Python实现八皇后问题示例代码
Dec 09 Python
numpy.random模块用法总结
May 27 Python
pyinstaller打包多个py文件和去除cmd黑框的方法
Jun 21 Python
详解Django配置优化方法
Nov 18 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
Nov 28 Python
Python计算IV值的示例讲解
Feb 28 Python
TensorFlow的reshape操作 tf.reshape的实现
Apr 19 Python
Python 中如何写注释
Aug 28 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
Oct 15 Python
Python3中PyQt5简单实现文件打开及保存
Jun 10 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
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
php使浏览器直接下载pdf文件的方法
2013/11/15 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
2016/01/05 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
浅谈PHP表单提交(POST&GET&URL编/解码)
2017/04/03 PHP
JavaScript 布尔操作符解析  && || !
2012/08/10 Javascript
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
vue的props实现子组件随父组件一起变化
2016/10/27 Javascript
微信小程序 实现tabs选项卡效果实例代码
2016/10/31 Javascript
js实现图片360度旋转
2017/01/22 Javascript
详解vue2.0组件通信各种情况总结与实例分析
2017/03/22 Javascript
JavaScript用200行代码制作打飞机小游戏实例
2017/06/21 Javascript
深入理解ES6 Promise 扩展always方法
2017/09/26 Javascript
BootStrap自定义popover,点击区域隐藏功能的实现
2018/01/23 Javascript
解决微信小程序防止无法回到主页的问题
2018/09/28 Javascript
今天,小程序正式支持 SVG
2019/04/20 Javascript
javascript防抖函数debounce详解
2019/06/11 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
vue中使用vue-print.js实现多页打印
2020/03/05 Javascript
django 按时间范围查询数据库实例代码
2018/02/11 Python
Python2.7实现多进程下开发多线程示例
2019/05/31 Python
python爬虫 模拟登录人人网过程解析
2019/07/31 Python
python @classmethod 的使用场合详解
2019/08/23 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
tensorflow模型继续训练 fineturn实例
2020/01/21 Python
Python生成随机验证码代码实例解析
2020/06/09 Python
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
学校门卫工作职责
2013/12/07 职场文书
招聘单位介绍信
2014/01/14 职场文书
科研课题实施方案
2014/03/18 职场文书
安全伴我行演讲稿
2014/09/04 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL