1、栈:
要弄明白什么是栈,我们需要先举一个生活中的例子。
假如有一个又细又长的圆筒,圆筒一端封闭,另一端开口。往圆筒里放入乒乓球,先放入 的靠近圆筒底部,后放入的靠近圆筒入口。
那么,要想取出这些乒乓球,则只能按照和放入顺序相反的顺序来取,先取出后放入的, 再取出先放入的,而不可能把最里面最先放入的乒乓球优先取出
栈(stack)是一种线性数据结构,它就像一个上图所示的放乒乓球的圆筒容器,栈中的元 素只能先入后出(First In Last Out,简称FILO)。最早进入的元素存放的位置叫作栈底(bottom),最后进入的元素存放的位置叫作栈顶(top) 栈这种数据结构既可以用数组来实现,也可以用链表来实现。
栈的数组实现如下:
栈的链表实现如下:
1.1栈的基本操作:
入栈操作(push)就是把新元素放入栈中,只允许从栈顶一侧放入元素,新元素的位置将 会成为新的栈顶。
出栈操作(pop)就是把元素从栈中弹出,只有栈顶元素才允许出栈,出栈元素的前一个 元素将会成为新的栈顶。
判空操作(isEmpty() )测试栈是否为空。不需要参数,并返回布尔值
在Python语言中,列表很好地实现了栈的功能,append方法相当于入楊pop方法相当于出栈。栈操作的代码实现相对简单。
class Stack:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def push(self, item):
self.items.append(item)
def pop(self):
return self.items.pop()
def peek(self):
return self.items[len(self.items)-1]
def size(self):
return len(self.items)
以上是python栈的内容。