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获得时间的实例说明
Mar 25 Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
Aug 22 Python
Python字符串转换成浮点数函数分享
Jul 24 Python
Python制作简易注册登录系统
Dec 15 Python
python下os模块强大的重命名方法renames详解
Mar 07 Python
简单易懂的python环境安装教程
Jul 13 Python
Python实现的朴素贝叶斯分类器示例
Jan 06 Python
scrapy-redis源码分析之发送POST请求详解
May 15 Python
Python Django框架单元测试之文件上传测试示例
May 17 Python
Python实现使用request模块下载图片demo示例
May 24 Python
详解Django模版中加载静态文件配置方法
Jul 21 Python
Series和DataFrame使用简单入门
Nov 13 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中文件上传的安全问题
2006/10/09 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
2012/06/05 PHP
PHP 获取ip地址代码汇总
2015/07/05 PHP
PHP接收json 并将接收数据插入数据库的实现代码
2015/12/01 PHP
ThinkPHP实现生成和校验验证码功能
2017/04/28 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
枚举JavaScript对象的函数
2006/12/22 Javascript
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
2015/03/01 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
RequireJS 依赖关系的实例(推荐)
2017/01/21 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
JavaScript限制在客户区可见范围的拖拽(解决scrollLeft和scrollTop的问题)(2)
2017/05/17 Javascript
解决百度Echarts图表坐标轴越界的方法
2018/10/17 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
Python 3.6 读取并操作文件内容的实例
2018/04/23 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
Python json模块dumps、loads操作示例
2018/09/06 Python
Python如何发布程序的详细教程
2018/10/09 Python
Django 多环境配置详解
2019/05/14 Python
CSS3五个技巧给你的网站带来出色的效果
2009/04/02 HTML / CSS
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
婚前协议书范本两则
2014/10/16 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
《卖火柴的小女孩》教学反思
2016/02/19 职场文书
JS Canvas接口和动画效果大全
2021/04/29 Javascript