
正文
Java代码实现循环队列 java循环队列queue
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Java如何使用数组实现循环队列的案例
class Element{
int id;
String name;
Element(int a,String n){
id=a;name=n;
}
}
class SeqQueue{
int first,last,maxsize;
Element queue[];
SeqQueue(int i){
maxsize=i;
first=last=-1;
queue=new Element[i];
}
public void clear(){//置空
first=last=-1;
}
public boolean isEmpty(){//判空
if(first==-1)return true;
else return false;
}
public Element getFirst(){//取队列头元素
if(first==-1)return null;
else return queue[first+1];
}
public boolean isFull(){//判满
if((last+1)%maxsize==first)return true;
else return false;
}
public boolean enQueue(Element e){//入队
if(this.isFull())return false;
if(this.isEmpty())
first=last=0;
else
last=(last+1)%maxsize;
queue[last]=e;
return true;
}
public Element deQueue(){//出队
Element t=queue[first];
if(this.isEmpty())return null;
if(first==last){
queue[first]=null;
this.clear();
return t;
}
queue[first]=null;
first=(first+1)%maxsize;
return t;
}
public int getLength(){//队列长度
if(last=first)return last-first+1;
else return maxsize-(first-last)+1;
}
public void display(){//打印所有元素
int i,j;
for (i=first,j=0;jthis.getLength();i=(i+1)%maxsize,j++)
System.out.println(queue[i].id);
}
}
相关问答
Q1: Java如何实现一个循环队列保存另一个类的对象
这里说下我的思路。循环队列。首先你要想清楚队列。队列有多种实现方式。链表和数组。
如果是固定的个数那可以用数组实现否则用双向循环链表实现。 具体说实现方式可以参考link list或arrayDequeue
Q2: Java数据结构中,如何遍历输出循环队列中的元素?求代码~
你说的不太清楚, 遍历队列是数组 ,集合 ,map还是其他什么
我就写个数组的给你, 你要其他的话说明白了再写
public class Test {
public static void main(String[] args) {
// 定义数组
int[] a = new int[5];
// 初始化数组
for(int i = 0; i 5; i++){
a[i] = i ;
}
// 循环输出数组
for(int i = 0; i 5; i++){
System.out.print(a[i] + " ");;
}
}
}
Q3: java中,实现一个循环队列,其中的边界条件有些弄不明白,请看我的代码:
//我做Java代码实现循环队列了一个测试类,Java代码实现循环队列你运行一下试试吧
//问题Java代码实现循环队列的关键在于这个类的设计似乎是,假设size是3,但是数组的size是4
//putloc是0,但是put的位置在数组中是1
//总觉得这个类的设计很怪,既然size是3,底层实现也做成3就好了。
import java.util.Arrays;
public class CircularQueue {
private char q[];
private int putloc, getloc;
public static void main(String[] args) {
CircularQueue circularQueue = new CircularQueue(3);
circularQueue.put('1');
circularQueue.put('1');
circularQueue.put('1');
circularQueue.put('1');
}
private void paint(String s) {
System.out.println(s + ": putloc=" + putloc + " getloc=" + getloc + " "
+ Arrays.toString(q));
}
public CircularQueue(int size) {
q = new char[size + 1];// 注意:这里数组长度加 1。
putloc = getloc = 0;
paint("create!");
System.out.println();
}
public void put(char ch) {
paint("before put");
if (putloc + 1 == getloc | ((putloc == q.length - 1) (getloc == 0))) { // 第一个边界条件想不清楚,为什么putloc+1==getloc
System.out.println("--Queue is full.");
return;
}
putloc++;
if (putloc == q.length)
putloc = 0;
q[putloc] = ch;
paint("after put");
System.out.println();
}
public char get() {
paint("before get");
if (getloc == putloc) {
System.out.println("--Queue is empty.");
return (char) 0;
}
getloc++;
if (getloc == q.length)
getloc = 0;
paint("after get");
System.out.println();
return q[getloc];
}
}
Java代码实现循环队列的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java循环队列queue、Java代码实现循环队列的信息别忘了在本站进行查找喔。





