package sun.way;
class QueueT {
private int maxSize;
private int[] queArr;
private int front;
private int rear;
private int nItems;
public QueueT(int s) {
maxSize = s;
queArr = new int[maxSize];
front = 0;
rear = -1;
nItems = 0;
}
public void insert(int j) {
if (isFull())
return;
if (rear == maxSize - 1)
rear = -1;
queArr[++rear] = j;
nItems++;
}
public int remove() {
int temp = queArr[front++];
if (front == maxSize)
front = 0;
nItems--;
return temp;
}
public int peekFront(){
return queArr[front];
}
public boolean isEmpty() {
return (nItems == 0);
}
public boolean isFull() {
return (nItems == maxSize);
}
public int size() {
return nItems;
}
public String toString() {
StringBuffer sb = new StringBuffer();
for (int i = rear; i >=0; i--) {
sb.append("" + queArr[i] + " ");
}
return sb.toString();
}
}public class QueueApp {
public static void main(String[] args) {
QueueT theQueue = new QueueT(10);
theQueue.insert(39);
theQueue.insert(23);
theQueue.insert(12);
theQueue.insert(54);
theQueue.insert(63);
theQueue.insert(36);
System.out.print(theQueue);
System.out.println();
if (!theQueue.isEmpty())
System.out.println("删除" + theQueue.remove());
System.out.println("------------------");
System.out.print(theQueue);
}
}
这个队列的tostring方法那里错了...为什么删除一个后打印还是一样的?
有什么办法没.帮忙改下啊
class QueueT {
private int maxSize;
private int[] queArr;
private int front;
private int rear;
private int nItems;
public QueueT(int s) {
maxSize = s;
queArr = new int[maxSize];
front = 0;
rear = -1;
nItems = 0;
}
public void insert(int j) {
if (isFull())
return;
if (rear == maxSize - 1)
rear = -1;
queArr[++rear] = j;
nItems++;
}
public int remove() {
int temp = queArr[front++];
if (front == maxSize)
front = 0;
nItems--;
return temp;
}
public int peekFront(){
return queArr[front];
}
public boolean isEmpty() {
return (nItems == 0);
}
public boolean isFull() {
return (nItems == maxSize);
}
public int size() {
return nItems;
}
public String toString() {
StringBuffer sb = new StringBuffer();
for (int i = rear; i >=0; i--) {
sb.append("" + queArr[i] + " ");
}
return sb.toString();
}
}public class QueueApp {
public static void main(String[] args) {
QueueT theQueue = new QueueT(10);
theQueue.insert(39);
theQueue.insert(23);
theQueue.insert(12);
theQueue.insert(54);
theQueue.insert(63);
theQueue.insert(36);
System.out.print(theQueue);
System.out.println();
if (!theQueue.isEmpty())
System.out.println("删除" + theQueue.remove());
System.out.println("------------------");
System.out.print(theQueue);
}
}
这个队列的tostring方法那里错了...为什么删除一个后打印还是一样的?
有什么办法没.帮忙改下啊
这个rear 我怎么在remove里面没看到调整啊?
有没有直接可以在tostring里面改的
点醒下
StringBuffer sb = new StringBuffer();
for (int i = rear; i >=front; i--) {
sb.append("" + queArr[i] + " ");
}
return sb.toString();
}
StringBuffer sb=new StringBuffer();
for (int i = front,j=front; j < front+nItems; i++,j++) {//j控制循环次数,i控制数组下标
if (i==maxSize) {
i=0;
}
sb.append(queArr[i]+" ");
}
return sb.toString();
}
我自己研究了半天,写成这样可以了。