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 28 Python
在Python中处理字符串之ljust()方法的使用简介
May 19 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
Jun 23 Python
Django在win10下的安装并创建工程
Nov 20 Python
对pandas中to_dict的用法详解
Jun 05 Python
Python Django简单实现session登录注销过程详解
Aug 06 Python
使用matlab或python将txt文件转为excel表格
Nov 01 Python
Python解析json代码实例解析
Nov 25 Python
详谈tensorflow gfile文件的用法
Feb 05 Python
python 工具 字符串转numpy浮点数组的实现
Mar 14 Python
pandas 像SQL一样使用WHERE IN查询条件说明
Jun 05 Python
详解解Django 多对多表关系的三种创建方式
Aug 23 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
肝肠寸断了解下!盘点史上最伤心的十大动漫
2020/03/04 日漫
收音机鉴频器对声音的影响和频偏分析
2021/03/02 无线电
PHP+Tidy-完美的XHTML纠错+过滤
2007/04/10 PHP
PHP 数字左侧自动补0
2008/03/31 PHP
WindowsXP中快速配置Apache+PHP5+Mysql
2008/06/05 PHP
php面向对象中的魔术方法中文说明
2014/03/04 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
php实现可逆加密的方法
2015/08/11 PHP
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
2011/10/23 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
2017/06/04 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
vue.extend与vue.component的区别和联系
2018/09/19 Javascript
微信小程序开发注意指南和优化实践(小结)
2019/06/21 Javascript
ant-design-vue按需加载的坑的解决
2020/05/14 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
Python学习之asyncore模块用法实例教程
2014/09/29 Python
python实现中文分词FMM算法实例
2015/07/10 Python
python3使用matplotlib绘制散点图
2019/03/19 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
Python实现朴素贝叶斯的学习与分类过程解析
2019/08/24 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
CSS3的Border-radius轻松制作圆角
2012/12/24 HTML / CSS
开业典礼主持词
2014/03/21 职场文书
《晚上的太阳》教学反思
2014/04/23 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
小学美术教学反思
2016/02/17 职场文书
2019秋季运动会口号
2019/06/25 职场文书
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python