您的位置:首页 > 其它

队列的顺序存储结构

2015-11-11 16:44 253 查看
队列

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: