python 数据结构之队列和栈

# 栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。
# 栈的特性:后进先出
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)

猜你喜欢

转载自blog.csdn.net/liming066/article/details/85247617