按照后进先出原理进行数据存储的线性容器
栈结构的实现:
- Stack()创建一个新的空栈
- push(item)添加一个新的元素item到栈顶压栈
- pop()弹出栈顶元素
- peek()返回栈顶元素
- is_empty()判断栈是否为空
- size()返回栈的元素个数
构造栈
- 创建一个叫做栈的类
- 创建栈的容器;用列表初始化容器,列表可以存放元素
- 列表需要私有化__list(不能让外部的直接操作内部容器)
class Stack(object):def __init__(self):self.__list=[]
压栈push
将我们的元素,从尾部进行添加事件复杂度为O(1)【头部插入时O(n))】
调用list的append方法,并且传入元素item
def push(self):self.__list.append(item)
弹栈pop
调用list的pop方法
def pop(self):return self.__list.pop()
返回栈顶元素peek
- 返回列表的尾元素[-1]
- 考虑列表为空,那么就返回None
def peek(self):if self.__list:return self.__list[-1]else:return None
判断列表是否为空is_empty
当list=[]即为空
或者
返回not list
def is_empyt(self):return self.__list==[]#return not self.__list
返回栈元素的个数size
直接调用列表的len()函数即可
def size(self):return (len(self.__list))
#定义一个类封装栈#构造栈的对象添加元素class Stack(object):#初始化构造容器def __init__(self):self.__list=[]#压栈def push(self,item):self.__list.append(item)#弹栈def pop(self):return self.__list.pop()#取栈顶元素def peek(self):if self.__list:return self.__list[-1]else:return None#判空def is_empty(self):return self.__list == []# return not self.__list#栈的元素个数def size(self):return len(self.__list)if __name__ == '__main__':#构造对象stack = Stack()#实例化stack.push(2)print(stack.size())print(stack.is_empty())stack.push(3)print(stack.peek())print(stack.pop())print(stack.size())
