编写代码,实现一个栈(Stack)的类。

编写代码,实现一个栈(Stack)的类。

栈是只能在一端插入和删除数据的序列。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

class Stack(object):

    def __init__(self):
        self.items = []
        #定义栈

    def is_empty(self):
        return self.items == []
    #判断栈空

    def peek(self):
        try:
            return self.items[-1]
        except IndexError:
           print("Error: peek from empty stack")
		#返回最后一个值,极为返回栈顶
		#同时考虑到空栈不能返回栈顶
        
    def size(self):
        return len(self.items)
		#返回列表长度极为栈长度
    
    def push(self,item):
        self.items.append(item)
        #模拟压入值操作,就是将值加到列表最后

    def pop(self):
        try:
            return self.items.pop()
        except IndexError:
            print("Error: pop from empty stack")
         #同时考虑了空栈时不能弹出
   		 #pop在弹出最后一个值时同时返回这个值

    def read(self):
        strs = ['%s'% i for i in reversed(self.items)]
        return "".join(strs)
		#利用python本身的性质来模拟栈的操作

#测试

if __name__ == '__main__':
    # 初始化一个栈对象
    my_stack = Stack()
    my_stack.push('h')
    my_stack.push('a')
    # 看一下栈的大小(有几个元素
    print(my_stack.read())
    # 读栈,看是否从栈顶遍历
    print(my_stack.size())
    # 打印栈顶元素
    print(my_stack.peek())
    print(my_stack.pop())
    print(my_stack.peek())
    print(my_stack.size())
    print(my_stack.pop())
    print(my_stack.size())
    print(my_stack.is_empty())
    print(my_stack.peek()
          #尝试空栈操作

  • 3
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值