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多线程操作实例
Nov 21 Python
Python中字典的基础知识归纳小结
Aug 19 Python
Django基础之Model操作步骤(介绍)
May 27 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
May 15 Python
pandas值替换方法
Jul 10 Python
Flask之请求钩子的实现
Dec 23 Python
解决python ogr shp字段写入中文乱码的问题
Dec 31 Python
Python中文件的写入读取以及附加文字方法
Jan 23 Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 Python
Python实现计算图像RGB均值方式
Jun 04 Python
Python Pygame实战之塔防游戏的实现
Mar 17 Python
Python基本的内置数据类型及使用方法
Apr 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异步执行的详解
2013/06/03 PHP
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
jQuery 1.0.2
2006/10/11 Javascript
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
使用js 设置url参数
2013/07/08 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
浅析Cookie中的Path与domain
2013/12/18 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
Nodejs Stream 数据流使用手册
2016/04/17 NodeJs
js设置文字颜色的方法示例
2016/12/30 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
vue Render中slots的使用的实例代码
2017/07/19 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
JS中数组与对象的遍历方法实例小结
2018/08/14 Javascript
Vue核心概念Action的总结
2019/01/18 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
vue登录注册实例详解
2019/09/14 Javascript
vue实现分页加载效果
2019/12/24 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
2017/02/13 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
完美解决pycharm 不显示代码提示问题
2020/06/02 Python
Python应用实现处理excel数据过程解析
2020/06/19 Python
Python实现壁纸下载与轮换
2020/10/19 Python
使用CSS3 制作一个material-design 风格登录界面实例
2016/12/12 HTML / CSS
手机银行营销方案
2014/03/14 职场文书
计算机软件专业求职信
2014/06/10 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
英语感谢信范文
2015/01/20 职场文书
班级班风口号大全
2015/12/25 职场文书
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
2021/05/31 Python
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android