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_自定义栈的更多相关文章

  1. Struts2配置拦截器自定义栈时抛异常:Unable to load configuration. - interceptor-ref - file:/D:/tomcat_install/webapps/crm/WEB-INF/classes/struts.xml

    代码如下: <interceptors>  <!-- 注册自定义拦截器 -->   <interceptor name="LoginInterceptor&qu ...

  2. LinkdList和ArrayList异同、实现自定义栈

    //.LinkdList和ArrayList异同 //ArrayList以连续的空间进行存储数据 //LinkedList以链表的结构存储数据 //栈 先进后出 最上面是栈顶元素 arrayLiat自 ...

  3. 自定义栈Stack 和 队列Queue

    自定义栈 接口 package com.test.custom; public interface IStack<E> { E pop(); void push(E e); E peek( ...

  4. JAVA堆,栈的区别,用AarrayList、LinkedList自定义栈

    大家都知道java模拟机在运行时要开辟空间所以它有特定的五个内存划分: 1.寄存器:    2.本地方法区:    3.方法区:    4.栈内存:    5.堆内存: 但是我们今天来注重讲一下栈和堆 ...

  5. 自定义栈类型,具有找到站内最小元素的min函数 ,且min(),pop(),push()函数的时间复杂度为O(1)

    基本思想: // 借助一个辅助栈,入栈时,若新元素比辅助栈栈顶元素小,则直接放入辅助站 // 反之,辅助站中放入次小元素(即辅助栈栈顶元素)====保证最小元素出栈时,次小元素被保存 static c ...

  6. Python_自定义递归的最大深度

    自定义递归的最大深度 python默认的最大递归深度为998,在有些情况下是不够用,需要我们自行设置.设置方式如下: import sys sys.setrecursionlimit(num) # n ...

  7. Python_自定义模块

    自定义模块例子(web简单框架): 专门处理逻辑的包:处理各种访问需求 数据库的交互:面临各种的查询,删改 ,dba, 配置文件(全局配置文件):列存储数据的地方,HTML代码存储地方 实现: 代码: ...

  8. JAVA自定义栈

    public class Stack{ int[] data; int maxSize; int top; public Stack(int maxSize) { this.maxSize=maxSi ...

  9. 用LinkedList和ArrayList实现自定义栈的异同

    //ArrayList已连续的空间进行存储数据  //LinkedList已链表的结构存储数据    //栈  MyStark ms=new MyStark();//new 一个实现栈的类  //压栈 ...

随机推荐

  1. (十二)UITableView的基本使用

    UITableView之所以支持滚动,是因为继承自UIScrollView.默认是垂直滚动,性能极佳. UITableView的两种样式: 1.UITableViewStylePlain       ...

  2. OpenCV导向滤波(引导滤波)实现(Guided Filter)代码,以及使用颜色先验算法去雾

    论文下载地址:http://research.microsoft.com/en-us/um/people/jiansun/papers/GuidedFilter_ECCV10.pdf 本文主要介绍导向 ...

  3. MySQL学习笔记_10_MySQL高级操作(下)

    MySQL高级操作(下) 五.MySQL预处理语句 1.设置预处理stmt,传递一个数据作为where的判断条件 prepare stmt from "select * from table ...

  4. 《java入门第一季》之面向对象(多态向下转型)

    上一篇博客(http://blog.csdn.net/qq_32059827/article/details/51328638)最后对多态的弊端做了显示,这里解决这个弊端.如下: /* 多态的弊端: ...

  5. 网站论坛同步用户,整合api,实现…

    在网上参考了很多资料后,终于完美实现了网站和discuz!nt论坛的双向整合,整合后网站和论坛之间可以同步注册.登录.退出和修改登录密码操作. 本系统的实现形式是新云CMS网站(ASP)和Discuz ...

  6. Material Design之CoordinatorLayout+AppBarLayout实现上滑隐藏ToolBar

    ok,今天继续更新Material Design系列!!! 废话不说,先看看效果图吧: 好了,现在来讲讲上图是怎么实现的吧!讲之前先讲讲几个控件: CoordinatorLayout  该控件也是De ...

  7. Gradle 1.12用户指南翻译——第二十七章. Ear 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  8. Struts-ValueStack和OGNL总结

    (1)ValueStack是一个借口,在Struts2中使用OGNL表达式实际上是使用实现了ValueStack接口类的OgnlValueStack,它是ValueStack的默认实现类. (2)Va ...

  9. WIN7电脑文件莫名其妙被删除后的恢复

    今天早上打开电脑,发现电脑F盘下的WINCE600文件夹下有剩下一小部分文件,绝大部分文件都找不到了,但是我记得自己没有删除过,而且在回收站也没有找到这些被删除的文件,怎恢复呢,今天尝试使用Recov ...

  10. Unity C#用WWW操作数据库

    //在C#中进行GET查询 IEnumerator GETTest() { WWW w = new WWW("http://192.168.1.12/kaohe.php?&id=10 ...