队列的基本操作

来源:互联网 发布:sql注入电子书 编辑:程序博客网 时间:2024/04/16 17:19
/*
 * 本程序主要是实现了循环队列的基本操作,包括insert,remove,peek,size等操作
 */
package Demo3;
class Queue
{
private int maxSize;//数组最大元素个数
private long [] queArray;
private int front;//队首
private int rear;//队尾
private int nItems;//队列数组的大小
public Queue(int s)
{
maxSize = s;
queArray = new long[maxSize];
front=0;
rear = -1;
nItems = 0;


}
//插入操作
public void insert(long j)
{
if(rear ==maxSize-1)
{
rear = -1;
}
queArray[++rear]=j;//队列是在队尾插入
nItems++;

}
//删除
public long remove()
{
long temp = queArray[front++];//队列是从队首删除元素,之后队首指针加1
if(front==maxSize)
{
front=0;
}
nItems--;
return temp;
}
//返回队首元素
public long peekfront()
{
return queArray[front];
}
//返回队尾元素
public long peekrear()
{
return queArray[rear];
}
//判断队列是否已满
public boolean isFull()
{
return nItems==maxSize;
}
//判断队列是否为空
public boolean isEmpty()
{
return nItems==0;
}
//返回队列的大小
public int size()
{
return nItems;
}






}


public class QueueDemo {


/**
* @param args
*/
public static void main(String[] args) {
Queue queue = new Queue(5);
queue.insert(10);
queue.insert(20);
queue.insert(30);
queue.insert(40);
queue.insert(50);
System.out.println(queue.size());
System.out.println(queue.peekfront());
System.out.println(queue.peekrear());
queue.remove();
queue.remove();
queue.remove();
System.out.println(queue.peekfront());
System.out.println(queue.size());
while(!queue.isEmpty())
{
long n = queue.remove();
System.out.println(n);
 
 
}
 


}


}

这是有数组元素个数nItem计数的循环队列,此外还有另外一种无数组元素个数nItem计数的队列,之后我会继续贴出相关代码,而两者的区别只要是在于isEmpty(),isFull(),size()的方法实现上。

0 0
原创粉丝点击