# 栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。 # 栈的特性:后进先出 class Stack(object): """栈""" def __init__(self): self.items=[] def is_empty(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)
#同栈一样,队列也可以用顺序表或者链表实现, 队列是一种可以实现“先进先出”的存储结构。 class Queue(): '''队列''' def __init__(self): self.items=[] def enqueue(self,item): """往队列中加入一个item""" self.items.insert(0,item) def queue_pop(self): '''从队列头部删除一个元素''' return self.items.pop() def is_empty(self): '''判断队列是否为空''' return self.items==[] def size(self): return len(self.items)
#双端队列:是一种具有队列和栈的性质的数据结构。 # 双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。 class DoubleQueue(object): '''双端队列''' def __init__(self): '''创建一个空的双端队列''' self.items=[] def add_font(self,item): '''从队头加入一个item元素''' self.items.insert(0,item) def add_rear(self,item): '''从尾部添加元素''' self.items.append(item) def remove_font(self,item): '''从队头删除一个元素''' return self.items.pop(0) def remove_rear(self): '''从尾部删除一个元素''' return self.items.pop() def is_empty(self): '''判断队列是否为空''' return self.items==[] def size(self): '''判断队列的大小''' return len(self.items)