数组实现队列与循环队列

数组实现队列

package com.atguigu.queue;

import java.util.Scanner;

public class ArrayQueueDemo {
   
    public static void main(String[] args) {
   
        ArrayQueue arrayQueue=new ArrayQueue(4);
        char key=' ';
        Scanner scanner=new Scanner(System.in);
        boolean loop=true;
        while (loop){
   
            System.out.println("s(show): 显示队列");
            System.out.println("e(show): 退出程序");
            System.out.println("a(show): 添加数据到队列");
            System.out.println("g(show): 获取数据");
            System.out.println("h(show): 查看对头数据");
            key=scanner.next().charAt(0);//接受一个字符
            switch (key){
   
                case 's':
                    try {
   
                        arrayQueue.showQueue();
                    }catch (Exception e){
   
                        System.out.println(e.getMessage());
                    }
                    break;
                case 'a':
                    try{
   
                        System.out.println("输入一个数");
                        int value=scanner.nextInt();
                        arrayQueue.addQueue(value);
                    }catch (Exception e){
   
                        System.out.println(e.getMessage());
                    }
                    break;
                case 'g':
                    try {
   
                        int res=arrayQueue.getQueue();
                        System.out.println("取出的数据是: "+res);
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用一个长度为10的数组实现队列,可以定义两个指针 front 和 rear 分别指向队列的头和尾。初始时,front 和 rear 都指向数组的第一个位置。队列的长度为0。 当有元素队时,将元素插到 rear 指向的位置,并将 rear 向后移动一个位置。如果 rear 超出了数组的范围,那么队列就满了,不能再插元素了。 当有元素出队时,将 front 指向的元素弹出,并将 front 向后移动一个位置。如果 front 超出了数组的范围,那么队列就为空,不能再弹出元素了。 具体实现细节可以参考下面的代码: ```python class Queue: def __init__(self): self.array = [None] * 10 self.front = 0 self.rear = 0 def is_empty(self): return self.front == self.rear def is_full(self): return (self.rear + 1) % len(self.array) == self.front def enqueue(self, element): if self.is_full(): raise Exception('Queue is full') self.array[self.rear] = element self.rear = (self.rear + 1) % len(self.array) def dequeue(self): if self.is_empty(): raise Exception('Queue is empty') element = self.array[self.front] self.front = (self.front + 1) % len(self.array) return element ``` 在这个实现中,我们使用取模运算来实现循环队列。当 rear 超出数组的范围时,将 rear 的值重新赋为 0,表示下一个元素将插数组的第一个位置。同理,当 front 超出数组的范围时,将 front 的值重新赋为 0,表示下一个元素将弹出数组的第一个位置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值