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 深入理解yield
Sep 06 Python
Python提取网页中超链接的方法
Sep 18 Python
Python实现字符串格式化输出的方法详解
Sep 20 Python
Windows系统下多版本pip的共存问题详解
Oct 10 Python
python实现音乐下载的统计
Jun 20 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
Python工程师必考的6个经典面试题
Jun 28 Python
Python建造者模式案例运行原理解析
Jun 29 Python
使用python脚本自动生成K8S-YAML的方法示例
Jul 12 Python
详解Python IO编程
Jul 24 Python
python程序实现BTC(比特币)挖矿的完整代码
Jan 20 Python
Python中的matplotlib绘制百分比堆叠柱状图,并为每一个类别设置不同的填充图案
Apr 20 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中的PDO类
2015/07/06 PHP
PHP可变变量学习小结
2015/11/29 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
PHP递归实现汉诺塔问题的方法示例
2017/11/25 PHP
javascript下IE与FF兼容函数收集
2008/09/17 Javascript
Jquery 常用方法经典总结
2010/01/28 Javascript
JS实现清除指定cookies的方法
2014/09/20 Javascript
js实现简单的可切换选项卡效果
2015/04/10 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
原生js二级联动效果
2017/06/20 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
Koa 中的错误处理解析
2019/04/09 Javascript
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
Python内置函数的用法实例教程
2014/09/08 Python
python根据京东商品url获取产品价格
2015/08/09 Python
python 简单的多线程链接实现代码
2016/08/28 Python
Python内置模块logging用法实例分析
2018/02/12 Python
修复 Django migration 时遇到的问题解决
2018/06/14 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
python 实现目录复制的三种小结
2019/12/04 Python
django 实现简单的插入视频
2020/04/07 Python
css3 中的新特性加强记忆详解
2016/04/16 HTML / CSS
CSS实现聊天气泡效果
2020/04/26 HTML / CSS
详解html5 canvas 微信海报分享(个人爬坑)
2018/01/12 HTML / CSS
小学新学期教师寄语
2014/01/18 职场文书
上班打牌检讨书
2014/02/07 职场文书
小学生感恩父母演讲稿
2014/08/28 职场文书
一般党员对照检查材料
2014/09/24 职场文书
个性发展自我评价2015
2015/03/09 职场文书
学生会部长竞选稿
2015/11/19 职场文书
《圆的面积》教学反思
2016/02/19 职场文书
Python数据处理的三个实用技巧分享
2022/04/01 Python