队列的顺序存储结构

来源:互联网 发布:阿里云 电话 编辑:程序博客网 时间:2024/04/29 09:59

队列
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

0 0
原创粉丝点击