Python实现的栈(Stack)

栈是一种只能在一端进行插入和删除操作的数据结构。

前言

python本身已有顺序表(List、Tupple)的实现,所以这里从栈开始

什么是栈

想象在桌子上放一摞书,这就是栈。这堆书的特点就是,最后被堆进去的,永远在最上面。从这堆书中取出一本书,哪本最方便?还是最上面的那本。栈这种数据结构就是如此:后进先出(Lask In First Out),即最后被堆进去的数据,最先被拿出来。

栈的实现

栈可以用顺序表方式实现,也可以用链表方式实现。我大Python的内建数据结构太强大,可以用list直接简单快捷。人生苦短,我用Python。

class Stack(object):
    # 初始化栈为空列表
    def __init__(self):
        self.items =[]
    # 判断栈是否为空,返回布尔值
    def is_empty(self):
        return self.items == []
    # 返回栈顶元素
    def peek(self):
        return self.items[len(self.items)-]
    # 返回栈的发小
    def size(self):
        return len(self.items)
    # 把新的元素压入栈
    def push(self,item):
        self.items.append(item)
    # 把栈顶元素丢出去(出栈)
    def pop(self,item):
        return self.items.pop()    

实例化一个栈对象

if __name__=='__mian__':
	# 初始化一个栈对象
	my_stack = Stack()
	# 把'h'入栈
	my_stack.push('h')
	# 把'a'入栈
	my_stack.push('a')
	# 看一下栈的大小(有几个元素)
	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())

提示

看完上面的代码,聪明的同学一定知道,Python里面实现栈,就是把list包装成一个类,再添加一些方法作为栈的基本操作。其他的数据结构在Python中也是以类似的方式实现的。

猜你喜欢

转载自blog.csdn.net/EverXerxes/article/details/83314598