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之集合的关系
Sep 24 Python
在Python的Django框架中包装视图函数
Jul 20 Python
python实现校园网自动登录的示例讲解
Apr 22 Python
用Python分析3天破10亿的《我不是药神》到底神在哪?
Jul 12 Python
OpenCV+python手势识别框架和实例讲解
Aug 03 Python
对pandas中时间窗函数rolling的使用详解
Nov 28 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
Python3读写Excel文件(使用xlrd,xlsxwriter,openpyxl3种方式读写实例与优劣)
Feb 13 Python
python通过对字典的排序,对json字段进行排序的实例
Feb 27 Python
python 三种方法实现对Excel表格的读写
Nov 19 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
Dec 03 Python
深入理解python多线程编程
Apr 18 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
松下Panasonic RF-B65电路分析
2021/03/02 无线电
Mysql的常用命令
2006/10/09 PHP
桌面中心(一)创建数据库
2006/10/09 PHP
Javascript与PHP验证用户输入URL地址是否正确
2014/10/09 PHP
javascript 对表格的行和列都能加亮显示
2008/12/26 Javascript
javascript制作sql转换为stringBuffer的小工具
2015/04/03 Javascript
KnockoutJs快速入门教程
2016/05/16 Javascript
深入理解MVC中的时间js格式化
2016/05/19 Javascript
JavaScript实现广告弹窗效果
2016/08/09 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
解决easyui日期时间框ie的兼容的问题
2018/03/01 Javascript
了解ESlint和其相关操作小结
2018/05/21 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
vue-cli创建的项目中的gitHooks原理解析
2020/02/14 Javascript
python实现带验证码网站的自动登陆实现代码
2015/01/12 Python
python遍历 truple list dictionary的几种方法总结
2016/09/11 Python
深入理解Python中变量赋值的问题
2017/01/12 Python
python实现识别手写数字 python图像识别算法
2020/03/23 Python
Django后端发送小程序微信模板消息示例(服务通知)
2019/12/17 Python
Django实现微信小程序支付的示例代码
2020/09/03 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
zooplus德国:便宜地订购动物用品、动物饲料、动物食品
2020/05/06 全球购物
What is the purpose of Void class? Void类的作用是什么?
2016/10/31 面试题
甜美蛋糕店创业计划书
2014/01/30 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
文体活动总结范文
2014/05/05 职场文书
高中生逃课检讨书
2014/10/10 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
创业开店,这样方式更合理
2019/08/26 职场文书
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android
关于MySQL临时表为什么可以重名的问题
2022/03/22 MySQL
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python