[算法和数据结构入门]用Python的数组实现一个队列的作用

实现一个队列

题目描述:

1. 使用数组实现一个队列,要求具有以下方法

  • 入队列
  • 出队列
  • 查看队列元素
  • 查看队列大小

2. 队列操作

  • 新建一个队列(命名为q1)
  • 将数组ls_1 按索引从小到大进行入队操作
  • 输出队列中元素个数
  • 获取队首元素,保存在变量q1_gettop中,观察栈中元素个数
  • 弹出栈顶元素,保存在变量s1_poptop中,观察栈中元素个数

提示

1.队列(queue)

在这里插入图片描述

简介

  • 一种常用数据结构
  • 先进先出(FIFO-first in first out):最先插入的元素最先出来

  • 使用数组实现队列,当进行出队操作后,数组前半部分空间空间并未被利用

2. 代码补全

class MyQueue:
    def __init__(self):
        self.arr = []
        self.front = 0   #队首索引(指针)
        self.rear = 0    #队尾索引(指针)
    
    #判断队列是否为空
    def is_empty(self):
        # 请输入你的代码
        return self.rear == self.front
    
    #返回队列大小
    def size(self):
        # 请输入你的代码
        return self.rear - self.front
    
    #返回队列首元素
    def get_front(self):
        #先判断队列是否为空,为空返回None,否则返回队首元素
        # 请输入你的代码
        if self.is_empty():
            return None
        else:
            return self.arr[self.front]
    #返回队尾元素
    def get_rear(self):
        #先判断队列是否为空,为空返回None,否则返回队尾元素
        # 请输入你的代码
        if self.is_empty():
            return None
        else:
            return self.arr[self.rear-1]

    #出队(更换队首)
    def de_queue(self):
        #先判断队列是否为空
        # 请输入你的代码
        if self.rear > self.front:
            self.front += 1
        else:
            print('队列已空')
           
    
    #入队
    def en_queue(self, item):
        #队尾插入新元素后,注意更新队尾索引(指针)
        # 请输入你的代码
        self.arr.append(item)
        self.rear += 1

队列操作

新建一个队列(命名为q1)

# 请输入你的代码
q1 = MyQueue()
q1
<__main__.MyQueue at 0x7d42408>

将数组ls_1 按索引从小到大进行入队操作

ls_1 = list(range(1,10,2))
ls_1
[1, 3, 5, 7, 9]
for i in ls_1:
    # 请输入你的代码
    q1.en_queue(i)

输出队列中元素个数

# 请输入你的代码
q1.size()
5

获取队首元素,保存在变量q1_getfront中,打印队列中元素个数

# 请输入你的代码
q1_getfront = q1.get_front()
print('队首元素为:{}'.format(q1_getfront))
print('队列长度为:{}'.format(q1.size()))
队首元素为:1
队列长度为:5

获取队尾元素,保存在变量q1_getrear中,打印队列元素个数

# 请输入你的代码
q1_getrear = q1.get_rear()
print('队尾元素为:{}'.format(q1_getrear))
print('队列长度为:{}'.format(q1.size()))
队尾元素为:9
队列长度为:5

执行出队操作,打印出队前后队首索引、队尾索引、队列元素个数

# 请输入你的代码
print('出队前队首索引为:{},队尾索引为:{}'.format(q1.front,q1.rear))
print('*******************')
q1.de_queue()
print('出队后队首索引为:{},队尾索引为:{}'.format(q1.front,q1.rear))
print('出队之后队列元素个数为:{}'.format(q1.size()))
出队前队首索引为:0,队尾索引为:5
*******************
出队后队首索引为:1,队尾索引为:5
出队之后队列元素个数为:4
发布了42 篇原创文章 · 获赞 28 · 访问量 4961

猜你喜欢

转载自blog.csdn.net/KaelCui/article/details/105393046