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进行数据科学工作的简单入门教程
Apr 01 Python
python中import学习备忘笔记
Jan 24 Python
解决python nohup linux 后台运行输出的问题
May 11 Python
python学习之hook钩子的原理和使用
Oct 25 Python
详解python执行shell脚本创建用户及相关操作
Apr 11 Python
用Anaconda安装本地python包的方法及路径问题(图文)
Jul 16 Python
django创建超级用户过程解析
Sep 18 Python
200行python代码实现贪吃蛇游戏
Apr 24 Python
python thrift 实现 单端口多服务的过程
Jun 08 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
Jun 24 Python
Pandas替换及部分替换(replace)实现流程详解
Oct 12 Python
Python Pygame实战在打砖块游戏的实现
Mar 17 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安装为Apache DSO
2006/10/09 PHP
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
jquery拖动改变div大小
2017/07/04 jQuery
JS鼠标滚动分页效果示例
2017/07/05 Javascript
Angular中支持SCSS的方法
2017/11/18 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
python基础教程之基本数据类型和变量声明介绍
2014/08/29 Python
python开发之for循环操作实例详解
2015/11/12 Python
python运行时间的几种方法
2016/06/17 Python
在 Python 应用中使用 MongoDB的方法
2017/01/05 Python
python3爬取数据至mysql的方法
2018/06/26 Python
pyqt5的QWebEngineView 使用模板的方法
2018/08/18 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
Python运算符+与+=的方法实例
2021/02/18 Python
HTML5实现移动端弹幕动画效果
2019/08/01 HTML / CSS
法国设计制造的扫帚和刷子:Andrée Jardin
2018/12/06 全球购物
洛佩桑酒店官方网站:Lopesan Hotels
2019/04/15 全球购物
Booking.com德国:预订最好的酒店和住宿
2020/02/16 全球购物
Oracle中delete,truncate和drop的区别
2016/05/05 面试题
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
财务与信息服务专业推荐信
2013/11/28 职场文书
四年级数学教学反思
2014/02/02 职场文书
优秀校长事迹材料
2014/12/24 职场文书
邀请函样本
2015/02/02 职场文书
2015个人半年总结范文
2015/03/09 职场文书
唐山大地震观后感
2015/06/05 职场文书
合作意向书怎么写
2019/06/24 职场文书
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python