队列的顺序实现

Posted 肥学

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了队列的顺序实现相关的知识,希望对你有一定的参考价值。



import java.util.*;

public class Main 
	public Queue InitQueue() 
		Queue queue=new Queue(new int[10]);
		queue.front=0;
		queue.rear=queue.data.length-1;//good不然会存在最后一位为空就显示栈满
		return queue;
	
	public Queue EnQueue(Queue queue,int n) 
		//这个判断是为了出现有出队现象导致再有数据入队时rear取余后从0下标开始
		if(queue.len>=queue.data.length) 
			System.out.println("该队列已满!!!");
		else 
			queue.rear=(queue.rear+1)%queue.data.length;//循环数列也是自己说的雨伞法
			queue.data[queue.rear]=n;
			queue.len++;
		
		return queue;
	
	public Queue Dequeue(Queue queue) 
		if(queue.len==0) 
			System.out.println("该队列以空!!!");
			return queue;
		
		System.out.println("队首元素"+queue.data[queue.front]+"以出队列。");
		queue.front--;
		queue.len--;
		return queue;
		
	
	public boolean isFull(Queue queue) 
		if(queue.len==queue.data.length) 
			System.out.println("已满!!");
			return false;
		
		else if(queue.len<queue.data.length) 
			System.out.println("未满!");
			return true;
		
		return false;
	
	public static void main(String[] args) 
		Main queue=new Main();
		
		Queue q=queue.InitQueue();
		for(int i=0;i<10;i++) 
			queue.EnQueue(q, i+1);
			queue.isFull(q);
		
		queue.EnQueue(q, 100);
		System.out.println("尾指针地址"+q.rear);
		queue.Dequeue(q);
		queue.EnQueue(q, 100);
		System.out.println("尾指针地址"+q.rear);//证明该队列是循环的
		
	


class Queue
	int data[];
	int front,rear;
	int len=0;
	public Queue() 
		
	
	public Queue(int data[]) 
		this.data=data;
	
	

以上是关于队列的顺序实现的主要内容,如果未能解决你的问题,请参考以下文章

数据结构学习笔记——队列的基本知识和顺序存储结构实现队列

队列:顺序队列和循环队列

顺序队列和链式队列的实现

如何只用队头指针实现顺序循环队列?

数据结构之动态顺序队列(C实现)

顺序队列的实现