Python_自定义栈
customStack.py
'''栈:是一种运算受限的线性表,其特点在于仅允许在一端进行元素的插入和删除操作,最后入栈的最先出栈,而最先入栈的元素最后出栈'''
s = []
s.append(3) #在尾部追加元素,模拟入栈操作
s.append(5)
s.append(7)
print(s)
s.pop() #在尾部弹出元素,模拟出栈操作
print('出栈后:',s)
s.pop() #在尾部弹出元素,模拟出栈操作
s.pop() #在尾部弹出元素,模拟出栈操作
#s.pop() #在尾部弹出元素,模拟出栈操作
# Traceback (most recent call last):
# File "/Users/c2apple/PycharmProjects/easyToPython/customStack.py", line 11, in <module>
# s.pop() #在尾部弹出元素,模拟出栈操作
# IndexError: pop from empty list #设计自定义栈,模拟入栈,出栈,判断栈是否为空,是否已满以及改变栈大小等操作
class Stack:
def __init__(self,size=10):
self._content = [] #使用列表存放栈的元素
self._size = size #初始栈大小
self._current = 0 #栈中元素个数初始化为0 #析构函数
def __del__(self):
del self._content def empty(self):
self._content = []
self._current = 0 def isEmpty(self):
return not self._content def setSize(self,size):
#如果缩小栈空间,则删除指定大小之后的已有元素
if size < self._current:
for i in range(size,self._current)[::-1]:
del self._current[i]
self._current = size
self._size = size def isFull(self):
return self._current == self._size def push(self,v):
if self._current < self._size:
self._content.append(v)
self._current = self._current + 1 #栈中元素个数加1
else:
print('Stack Full!') def pop(self):
if self._content:
self._current = self._current - 1 #栈中元素个数减1
return self._content.pop()
else:
print('Stack is empty!') def show(self):
print(self._content) def showRemainderSpace(self):
print('Stack can still PUSh',self._size-self._current,'elements.')
useCustomStack.py
from customStack import Stack #导入模块
s = Stack() #实例化对象
print('测试栈是否为空:',s.isEmpty())
print('测试栈是否已满:',s.isFull())
s.push(5) #元素入栈
s.push(8)
s.push('a')
s.pop() #元素出栈
s.push('b')
s.push('c')
s.show()
s.showRemainderSpace() #查看栈的剩余大小
print('查看当前current',s._content)
s.setSize(4) #修改栈的大小
print('测试栈是否已满:',s.isFull(),'栈内元素',s._content)
Python_自定义栈的更多相关文章
- Struts2配置拦截器自定义栈时抛异常:Unable to load configuration. - interceptor-ref - file:/D:/tomcat_install/webapps/crm/WEB-INF/classes/struts.xml
代码如下: <interceptors> <!-- 注册自定义拦截器 --> <interceptor name="LoginInterceptor&qu ...
- LinkdList和ArrayList异同、实现自定义栈
//.LinkdList和ArrayList异同 //ArrayList以连续的空间进行存储数据 //LinkedList以链表的结构存储数据 //栈 先进后出 最上面是栈顶元素 arrayLiat自 ...
- 自定义栈Stack 和 队列Queue
自定义栈 接口 package com.test.custom; public interface IStack<E> { E pop(); void push(E e); E peek( ...
- JAVA堆,栈的区别,用AarrayList、LinkedList自定义栈
大家都知道java模拟机在运行时要开辟空间所以它有特定的五个内存划分: 1.寄存器: 2.本地方法区: 3.方法区: 4.栈内存: 5.堆内存: 但是我们今天来注重讲一下栈和堆 ...
- 自定义栈类型,具有找到站内最小元素的min函数 ,且min(),pop(),push()函数的时间复杂度为O(1)
基本思想: // 借助一个辅助栈,入栈时,若新元素比辅助栈栈顶元素小,则直接放入辅助站 // 反之,辅助站中放入次小元素(即辅助栈栈顶元素)====保证最小元素出栈时,次小元素被保存 static c ...
- Python_自定义递归的最大深度
自定义递归的最大深度 python默认的最大递归深度为998,在有些情况下是不够用,需要我们自行设置.设置方式如下: import sys sys.setrecursionlimit(num) # n ...
- Python_自定义模块
自定义模块例子(web简单框架): 专门处理逻辑的包:处理各种访问需求 数据库的交互:面临各种的查询,删改 ,dba, 配置文件(全局配置文件):列存储数据的地方,HTML代码存储地方 实现: 代码: ...
- JAVA自定义栈
public class Stack{ int[] data; int maxSize; int top; public Stack(int maxSize) { this.maxSize=maxSi ...
- 用LinkedList和ArrayList实现自定义栈的异同
//ArrayList已连续的空间进行存储数据 //LinkedList已链表的结构存储数据 //栈 MyStark ms=new MyStark();//new 一个实现栈的类 //压栈 ...
随机推荐
- 【翻译】Ext JS最新技巧——2014-9-10
原文:Top Support Tips Greg Barry:删除网格单元格的焦点 在Ext JS 5.0.1,添加了一些与可访问性和支持ARIA有关的显著改进.虽然鼓励使用这些新增功能,但默认样式可 ...
- 【Qt编程】Qt版扫雷
学习要学会举一反三.在以前的<用matlab扫扫雷>一文中,我用matlab简单的编写了一个扫雷小程序.当然,与Windows自带的扫雷程序自然是不敢相提并论.今天我就用c++来写个扫雷程 ...
- AngularJS进阶(十一)AngularJS实现表格数据的编辑,更新和删除
AngularJS实现表格数据的编辑,更新和删除 效果 实现 首先,我们先建立一些数据,当然你可以从你任何地方读出你的数据 var app = angular.module('plunker', [' ...
- Demonstration of DB Query Analyzer 6.03 Installation and Running on Microsoft Windows 8
Demonstration of DB Query Analyzer 6.03 Installation and Running on Microsoft Windows 8 Ma Genfeng ( ...
- Debian系列软件管理(第二版)
Debian系列软件管理 1.搜索软件包信息 apt-cache search apt-cache search yum 2.查看软件包信息 apt-cache show rpm 3.安装软件 apt ...
- SpriteBuilder切换解决方案以及CCB的修改与保存
在SpriteBuilder中切换解决方案非常简单,可以按cmd+数字键即可. 如上图可以看到数字键1,2,3分别对应于3中不同的解决方案. 注意:当通过在CCB中包含一个Sub File Node的 ...
- RubyGem默认源安装太慢,修改国内淘宝源
原帖地址:http://www.hiceon.com/topic/Ruby-Gem-install-source-taobao/ WHY? 由于国内网络原因(你懂的),导致 rubygems.org ...
- shell脚本里面相互调用时路径不要用pwd获取
shellA调用shellB,如果shellB 里面需要使用路径作为变量,去寻找其它文件.那么要注意,不用pwd,其返回的是系统中用户当前所在位置的路径,也就是shellA的路径,这样就错了.应该用d ...
- 【45】java的封装剖析
类是构造对象的模板或蓝图. 封装的一些概念 从形式上看,封装不过是将数据和行为组合到一个包中,并对对象的使用者隐藏了数据的实现形式. 每个对象都包含实例域和方法.实例域的集合代表了一个集合的状态,通过 ...
- java--银行业务调度系统
转载请申明出处:http://blog.csdn.net/xmxkf 1. 银行调度业务系统的题目来源与需求阐述 银行业务调度系统: 模拟实现银行业务调度系统逻辑,具体需求如下: 1.银行内有6个 ...