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使用win32com实现的模拟浏览器功能示例
Jul 13 Python
使用pandas的DataFrame的plot方法绘制图像的实例
May 24 Python
python的pip安装以及使用教程
Sep 18 Python
Python实战购物车项目的实现参考
Feb 20 Python
Python实现打砖块小游戏代码实例
May 18 Python
python反转列表的三种方式解析
Nov 08 Python
Python超越函数积分运算以及绘图实现代码
Nov 20 Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 Python
python通过文本在一个图中画多条线的实例
Feb 21 Python
基于Python和C++实现删除链表的节点
Jul 06 Python
Python调用百度OCR实现图片文字识别的示例代码
Jul 17 Python
使用Python判断一个文件是否被占用的方法教程
Dec 16 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文件操作实现代码分享
2011/09/01 PHP
php中常用的预定义变量小结
2012/05/09 PHP
基于PHP array数组的教程详解
2013/06/05 PHP
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
PHP实现微信小程序用户授权的工具类示例
2019/03/05 PHP
javascript(jquery)利用函数修改全局变量的代码
2009/11/02 Javascript
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
浅谈JavaScript中指针和地址
2015/07/26 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
xmlplus组件设计系列之选项卡(Tabbar)(5)
2017/05/03 Javascript
VueJS组件之间通过props交互及验证的方式
2017/09/04 Javascript
vue写一个组件
2018/04/09 Javascript
详解JavaScript 的变量
2019/03/08 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
JS数据类型判断的几种常用方法
2020/07/07 Javascript
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
python pandas库中DataFrame对行和列的操作实例讲解
2018/06/09 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
详解Anaconda 的安装教程
2020/09/23 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
巴西网上药店:Drogaria Araujo
2021/01/06 全球购物
女娲补天教学反思
2014/02/05 职场文书
保险经纪人求职信
2014/03/11 职场文书
安全生产月宣传标语
2014/10/06 职场文书
关于工作经历的证明书
2014/10/11 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python
python使用pycharm安装pyqt5以及相关配置
2022/04/22 Python