队列

队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。

队列模型.png

队列的实现:

  1. Queue()创建一个空队列
  2. enqueue(item)往队列中添加一个item元素
  3. dequeue()从队列头部删除一个元素
  4. is_empty()判断一个队列是否为空
  5. size()返回队列大小

队列的构建:

  1. 创建一个叫做队列的类
  2. 创建队列的容器;用列表初始化容器,列表可以存放元素
  3. 列表需要私有化__list(不能让外部的直接操作内部容器)
  1. class Queue(object):
  2. #初始化构造容器
  3. def __init__(self):
  4. self.__list=[]

进队enqueue

调用list的append方法,并且传入元素item

def enqueue(self,item):
    self.__list.append(item)

出队dequeue

调用list的pop方法

def dequeue(self):

    return self.__list.pop(0)

判空,元素个数

与栈相同

# 判空
    def is_empty(self):
        return self.__list == []

           # return not self.__list

 #队列的元素个数
    def size(self):
        return len(self.__list)
#定义一个类封装队列
#构造队列的对象添加元素

class Queue(object):
    #初始化构造容器
    def __init__(self):
        self.__list=[]

#进队
    def enqueue(self,item):
        self.__list.append(item)

#出队
    def dequeue(self):
        #头部删除
        return self.__list.pop(0)

 # 判空
    def is_empty(self):
        return self.__list == []

           # return not self.__list

 #队列的元素个数
    def size(self):
        return len(self.__list)

双端队列

双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。

双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队

双端队列.png

队列的实现

  • Deque() 创建一个空的双端队列
  • add_front(item) 从队头加入一个item元素
  • add_rear(item) 从队尾加入一个item元素
  • remove_front() 从队头删除一个item元素
  • remove_rear() 从队尾删除一个item元素
  • is_empty() 判断双端队列是否为空
  • size() 返回队列的大小

队列的构建:

与队列类似

class Dequeu(object):
    #初始化构造容器
    def __init__(self):
        self.__list=[]

头部添加add_front

可以调用insert方法在0处插入元素

def add_front(self,item):
    self.__list(0,item)

尾部添加add_rear

调用apped方法

def add_rear(self,item):
    self.append(item)

头部弹出pop_front

def pop_front(self):
    return se;f.__list.pop(0)

尾部弹出pop_rear

def pop_rear(self):
    return se;f.__list.pop()

判空,元素个数

与队列相同

# 判空
    def is_empty(self):
        return self.__list == []

           # return not self.__list

 #队列的元素个数
    def size(self):
        return len(self.__list)
#定义一个类封装队列
#构造队列的对象添加元素

class Deque(object):
    #初始化构造容器
    def __init__(self):
        self.__list=[]

    #头部添加
    def add_front(self,item):
        self.__list.insert(0,item)

    #尾部添加
    def add_rear(self,item):
        self.__list.append(item)

    #头部弹出
    def pop_front(self):
        return self.__list.pop(0)

    #尾部弹出
    def pop_rear(self):
        return self.__list.pop()

    #判空
    def is_empty(self):
        return self.__list == []

    #长度
    def size(self):
        return len(self.__list)