Python 实现栈

栈(stacks)是一种只能通过访问其栈尾来实现数据存储与检索的线性数据结构,具有后进先出(last in first out,LIFO)的特征。
下面是python实现栈的代码:

#!/usr/bin/python
#coding=utf-8
class Stack(object) :
  def __init__(self,size):
    #类的构造函数
    self.size = size
    self.stack = []

  def __str__(self):
    #类的字符串输出方法,类似于java的.toString()方法
    return str(self.stack)

  def getSize(self) :
    #获取栈当前大小
    return len(self.stack)
  
  def push(self, x) :
    #入栈,栈满抛异常
    if self.isfull() :
      #return -1
      raise Exception("Stack is full")
    self.stack.append(x)

  def pop(self) :
    #出栈,栈空抛异常
    if self.isempty() :
      #return -1
      raise Exception("Stack is empty")
    topElement = self.stack[-1] 
    self.stack.remove(topElement)
    return topElement
  
  def isempty(self) :
    #判断栈空
    if len(self.stack) == 0 :
      return True
    return False
    
  def isfull(self) :
    #判断栈满
    if len(self.stack) == self.size :
      return True
    return False  

下面是模块内的测试代码:

if __name__ == '__main__' :
  stackTest = Stack(10)
  for i in range(10) :
    stackTest.push(i)

  print stackTest.getSize()

  print stackTest.isempty()
  print stackTest.isfull()
  print stackTest

  for i in range(6) :
    stackTest.pop()

  print stackTest.getSize()
  print stackTest

测试结果:
s

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值