一、创建队列并且引用队列
public 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)
rear=-1;
queArray[++rear]=j;
nItems++;
}
public long remove(){
long temp=queArray[front++];
if (front==maxSize)
front=0;
nItems--;
return temp;
}
public long peakFront(){
return queArray[front];
}
public boolean isEmpty(){
return (nItems==0);
}
public boolean isFull(){
return (nItems==maxSize);
}
public int size(){
return nItems;
}
}
//主类
import java.util.Random;
import java.util.Random;
public class QueueApp {
public static void main(String[] args) {
Queue theQueue=new Queue(5);
Random r=new Random();
for(int i=0;i<4;i++){
long temp=r.nextInt(100);
System.out.println("插入数"+temp);
theQueue.insert(temp);
}
for(int j=0;j<3;j++) {
long temp= theQueue.remove();
System.out.println("移除"+temp);
}
for(int i=0;i<4;i++){
long temp=r.nextInt(100);
System.out.println("再次插入数"+temp);
theQueue.insert(temp);
}
while(!theQueue.isEmpty()){
long n=theQueue.remove();
System.out.println(n);
System.out.println(" ");
}
System.out.println("");
}
}
问题!!!!再次插入有问题,设置的四个,却只插入两个?????
2.具有优先级的队列,即按照从小到大 的顺序插入队列中
public class Priotity {
private int maxSize;
private long [] queArray;
private int nItems;
public Priotity(int s){
maxSize=s;
queArray=new long[maxSize];
nItems=0;
}
public void insert(long item){
int j;
if(nItems==0)
queArray[nItems++]=item;
else
{
for(j=nItems-1;j>=0;j--){
if(item>queArray[j])
queArray[j+1]=queArray[j];
else
break;
}
queArray[j+1]=item;
nItems++;
}
}
public long remove(){
return queArray[--nItems];
}
public boolean isEmpty(){
return (nItems==0);
}
public boolean isFull(){
return (nItems==maxSize);
}
}
//测试
import java.util.Random;
public class PriotityApp {
public static void main(String[] args) {
Priotity theQueue=new Priotity(5);
Random r=new Random();
for(int i=0;i<4;i++){
long temp=r.nextInt(100);
System.out.println("插入数"+temp);
theQueue.insert(temp);
}
for(int j=0;j<3;j++) {
long temp= theQueue.remove();
System.out.println("移除"+temp);
}
for(int i=0;i<4;i++){
long temp=r.nextInt(100);
System.out.println("再次插入数"+temp);
theQueue.insert(temp);
}
while(!theQueue.isEmpty()){
long n=theQueue.remove();
System.out.print(n);
System.out.print(" ");
}
System.out.println("");
}
}