队列的顺序存储结构

队列
1.环形,队头front,队尾rear
2.队头所指的data位置不放值
3.队满条件:(rear+1)%MaxSize == front
4.队空条件:reat == front
5.指针都是逆时针走,+1
这里写图片描述

package Queue;

import java.util.Scanner;

class Queue
{
    final int MaxSize = 5;
    int data[];
    int front;
    int rear;

    public Queue()
    {
        data = new int[MaxSize];
        front = 0;
        rear = 0;
    }

    public boolean QueueEmpty()
    {
        if (front == rear)
        {
            return true;
        } else
            return false;
    }

    public void enQueue(int n)
    {
        if ((rear + 1) % MaxSize == front) //队满
        {
            System.out.println("Queue full!");
            return;
        }
        rear = (rear + 1) % MaxSize;
        data[rear] = n; // 存到队尾+1
    }

    public int deQueue()
    {
        if (rear == front)  //队空
        {
            System.out.println("Queue empty!");
            return -1;
        }
        front = (front + 1) % MaxSize; // 队头不存值,值在头+1
        int n = data[front];
        return n;
    }
}

public class MyQueue
{
    public static void main(String args[])
    {
        Scanner cin = new Scanner(System.in);
        Queue q = new Queue();
        for (int i = 0; i < 4; i++)
            q.enQueue(i);
        System.out.println("front:" + q.front + " rear:" + q.rear);
        while (!q.QueueEmpty())
        {
            System.out.print(q.deQueue() + " ");
            System.out.println("front:" + q.front + " rear:" + q.rear);

        }
        System.out.println();
        for (int i = 0; i < 4; i++)
            q.enQueue(i);
        System.out.println("front:" + q.front + " rear:" + q.rear);
        while (!q.QueueEmpty())
        {
            System.out.print(q.deQueue() + " ");
            System.out.println("front:" + q.front + " rear:" + q.rear);
        }
    }
}

输出:
front:0 rear:4
0 front:1 rear:4
1 front:2 rear:4
2 front:3 rear:4
3 front:4 rear:4

front:4 rear:3
0 front:0 rear:3
1 front:1 rear:3
2 front:2 rear:3
3 front:3 rear:3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值