python堆栈实现
百度百科定义:
堆栈是一个在计算机科学中经常使用的抽象数据类型。堆栈中的物体具有一个特性: 最后一个放入堆栈中的物体总是被最先拿出来, 这个特性通常称为后进先出(LIFO)队列。 堆栈中定义了一些操作。 两个最重要的是PUSH和POP。 PUSH操作在堆栈的顶部加入一 个元素。POP操作相反, 在堆栈顶部移去一个元素, 并将堆栈的大小减一。
我的实现代码如下:
#-*- coding:utf-8 -*-
__metaclass__ = type
class mystack():
def __init__(self,value):
self.value = value
self.behind = None
self.before = None
def __str__(self):
return str(self.value)
def top(stack): #顶部
if isinstance(stack,mystack):
if stack.behind is not None:
return top(stack.behind)
else:
return stack
else:
print ('没有初始化')
def push(stack,elem): #入栈
in_elem = mystack(elem)
if isinstance(stack,mystack):
now_top = top(stack)
in_elem.before = now_top
in_elem.before.behind = in_elem
print ('成功入栈')
else:
print ('没有初始化')
def pop(stack): #出栈
if isinstance(stack,mystack):
now_top = top(stack)
if now_top.before is not None:
now_top.before.behind = None
now_top.before = None
return now_top
else:
return('栈空了')
else:
return('没有初始化')
demo1 = mystack(1) #初始化,只能通过demo1访问
for i in range(10): #入栈
push(demo1,i)
print '---------------'
print demo1
for p in range(11): #出栈
print pop(demo1)
输出:
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
成功入栈
---------------
1
9
8
7
6
5
4
3
2
1
0
栈空了
[Finished in 0.5s]
python堆栈实现的更多相关文章
- python 堆栈
class Node: #堆栈链结节点的声明 def __init__(self): self.data= #堆栈数据的声明 self.next=None #堆栈中用来指向下一个节点 top=None ...
- 在 Windows Azure 网站上使用 Django、Python 和 MySQL:创建博客应用程序
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Sunitha Muthukrishna 撰写. 根据您编写的应用程序,Windows Azure 网站上的基本Python 堆 ...
- Python Cookbook(第3版)中文版:15.21 诊断分段错误
15.21 诊断分段错误¶ 问题¶ 解释器因为某个分段错误.总线错误.访问越界或其他致命错误而突然间奔溃. 你想获得Python堆栈信息,从而找出在发生错误的时候你的程序运行点. 解决方案¶ faul ...
- python yield,到这个层次,才能叫深入哈
http://python.jobbole.com/88677/?utm_source=blog.jobbole.com&utm_medium=relatedPosts ~~~~~~~~~~~ ...
- 我常用的 Python 调试工具 - 博客 - 伯乐在线
.ckrating_highly_rated {background-color:#FFFFCC !important;} .ckrating_poorly_rated {opacity:0.6;fi ...
- Ruby 和 Python 分析器是如何工作的?
你好! 我作为一名编写Ruby profiler的先驱,我想对现有的Ruby和Python profiler如何工作进行一次调查. 这也有助于回答很多人的问题:“你怎么写一个profiler?” 在这 ...
- 常用的 Python 调试工具,Python开发必读-乾颐堂
以下是我做调试或分析时用过的工具的一个概览.如果你知道有更好的工具,请在评论中留言,可以不用很完整的介绍. 日志 没错,就是日志.再多强调在你的应用里保留足量的日志的重要性也不为过.你应当对重要的内容 ...
- Python 设计和历史的 27 个问题
花下猫语: 先祝大家假期快乐!今天,我要分享一篇长文,选自 Python 的官方文档.它列举了 27 个设计及历史的问题,其中有些问题我曾经分享过,例如为什么使用显式的 self.浮点数的问题.len ...
- python现状
自从官方宣布 2020 年 1 月后不再更新维护 Python2,已经有一大批开源软件将其抛弃.今天,抛弃 Python2 的名单上又多了一个重磅软件.Python2 是 Python 官方在 200 ...
随机推荐
- web安全:QQ号快速登录漏洞及被盗原理
为什么你什么都没干,但QQ空间中却发了很多小广告?也许你的QQ账号已经被盗.本文将讲解一个QQ的快速登录的漏洞. 我前阵子在论坛上看到一个QQ的快速登录的漏洞,觉得非常不错,所以把部分原文给转到园子来 ...
- 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序
使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...
- spring 整合Mybatis 错误:Parameter 'items_id' not found. Available parameters are [array]
运行环境:jdk1.7.0_17+tomcat 7 + spring:3.2.0 +mybatis:3.2.7+ eclipse 错误:Parameter 'items_id' not found. ...
- WCF(三)分布式事务
最近在学WCF,所以有两个设想疑问(菜鸟多疑问): 如果有WCF服务A,WCF服务B,客户端调用WCF服务A插入一条数据,然后再调用服务B也插入一条数据,然而服务B出错了进行了回滚,服务A能不能也进行 ...
- 工作常用git命令
克隆项目 git clone gitssh地址 提交前的准备 git config user.name 您的中文名 git config user.email 公司邮箱 获取分支 #### 将远端分支 ...
- 03-TypeScript中的强类型
在js中不能定义类型,而是根据赋值后,js运行时推断类型.在ts中支持强类型,强类型包括string.number(浮点型,不是整型).boolean.any(任意类型).Array<T> ...
- JS查错小工具-三生有幸【推荐】
H5和CSS语言在开发者官网上都有在线查错工具,同样的,更加复杂的JavaScript也需要一个查错工具,(别指望DreamWeaver了,debug功能做的太垃圾,还不如Firefox自带的强..) ...
- 看懂c/c++ 函数、指针、数组定义
读懂 函数 + 指针 + 数组 c语言运算符机器优先级,看这里 结合运算符优先级,我们试着读懂函数和指针 优先级简单看 表达式提升():一级优先 函数():二级优先 数组[]:二级优先 指针定义*:三 ...
- 201521044091《Java程序设计》第7周学习总结
1. 本周学习总结 ArrayList代码分析 1.1 解释ArrayList的contains源代码 用于判断Collection中是否包含某个元素.List<T>的contains方法 ...
- 201521123088 《Java程序设计》第14周学习总结
1. 本周学习总结 2. 书面作业 1. MySQL数据库基本操作建立数据库,将自己的姓名.学号作为一条记录插入.(截图,需出现自己的学号.姓名)在自己建立的数据库上执行常见SQL语句(截图) 2. ...