[Python]python算法入门 -- 栈(stack)

读书笔记

ref:http://interactivepython.org/courselib/static/pythonds/BasicDS/stacks.html

Stack : LIFO last-in first-out

生活中的例子: 放书,浏览器记录等


stack通常的操作:
Stack() 建立一个空的栈对象
push() 把一个元素添加到栈的最顶层
pop() 删除栈最顶层的元素,并返回这个元素
peek() 返回最顶层的元素,并不删除它
isEmpty() 判断栈是否为空
size() 返回栈中元素的个数


简单案例以及操作结果:
Stack Operation	          Stack Contents     Return Value
	s.isEmpty()	    []	               True
	s.push(4)	    [4]	 
	s.push('dog')	    [4,'dog']	 
	s.peek()	    [4,'dog']	       'dog'
	s.push(True)	    [4,'dog',True]	 
	s.size()	    [4,'dog',True]	    3
	s.isEmpty()	    [4,'dog',True]	    False
	s.push(8.4)	    [4,'dog',True,8.4]	 
	s.pop()	            [4,'dog',True]	    8.4
	s.pop()	            [4,'dog']	        True
	s.size()	    [4,'dog']	        2




这里使用python的list对象模拟栈的实现:
#coding:utf8
class Stack:
    """模拟栈"""
    def __init__(self):
        self.items = []
        
    def isEmpty(self):
        return len(self.items)==0 
    
    def push(self, item):
        self.items.append(item)
    
    def pop(self):
        return self.items.pop() 
    
    def peek(self):
        if not self.isEmpty():
            return self.items[len(self.items)-1]
        
    def size(self):
        return len(self.items) 
    
    
s=Stack()
print(s.isEmpty())
s.push(4)
s.push('dog')
print(s.peek())
s.push(True)
print(s.size())
print(s.isEmpty())
s.push(8.4)
print(s.pop())
print(s.pop())
print(s.size())


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值