大家好!
刚看了一段代码,不明白的是if (front<rear)这个情况什么时候成立!
希望大家给解释一下! 代码如下:
public class Queue{
private int front;
private int rear;
private int count;
private int capacity;
private int capacitylncrement; private Object[] itemArray;
/*-----------------*/ //此处,我们需要无参数构造函数
public Queue() {
front = 0;
rear = 0;
count = 0;
capacity = 2;
capacitylncrement=2;
itemArray = new Object[capacity];
}
/*----------------*/ public boolean empty(){
return (count == 0);
}
/*----------------*/ public void insert(Object newltem){
//如果itemArray没有足够的空间,
//则通过增幅扩展itemArray
if(count== capacity){
capacity += capacitylncrement;
Object[] tempArray = new Object[capacity];
if (front<rear){ //如果元素位于itemArray[front:rear-1]中
for(int i = front; i < count;i++){
tempArray[i]=itemArray[i];
}
System.out.println("woshishui");
} else { //否则,将元素分成2个区间
for(int i = 0;i<rear;i++){
tempArray[i]=itemArray[i];
}
for(int i = front;i<count;i++){
tempArray[i+capacitylncrement]=itemArray[i];
}
front+=capacitylncrement;
}
itemArray=tempArray;
//System.out.println("nishishui");
}
itemArray[rear]=newltem;
rear=(rear+1)%capacity;
count++;
}
public void print()
{
for(int i=0;i<capacity;i++)
System.out.println(itemArray[i]);
}
public static void main(String[] args){
Queue q=new Queue();
q.insert(11);
// System.out.println(q.rear);
// System.out.println(q.count);
// System.out.println(q.capacity);
// System.out.println("########################");
q.insert(12);
// System.out.println(q.rear);
// System.out.println(q.count);
// System.out.println(q.capacity);
// System.out.println("########################");
q.insert(13);
// System.out.println(q.rear);
// System.out.println(q.count);
// System.out.println(q.capacity);
// System.out.println("########################");
q.insert(14);
q.insert(15);
q.insert(16);
q.insert(17);
q.insert(18);
q.insert(19);
q.insert(20);
q.insert(21);
q.insert(22);
q.insert(23);
q.insert(24);
q.insert(25);
q.print();
}
}
刚看了一段代码,不明白的是if (front<rear)这个情况什么时候成立!
希望大家给解释一下! 代码如下:
public class Queue{
private int front;
private int rear;
private int count;
private int capacity;
private int capacitylncrement; private Object[] itemArray;
/*-----------------*/ //此处,我们需要无参数构造函数
public Queue() {
front = 0;
rear = 0;
count = 0;
capacity = 2;
capacitylncrement=2;
itemArray = new Object[capacity];
}
/*----------------*/ public boolean empty(){
return (count == 0);
}
/*----------------*/ public void insert(Object newltem){
//如果itemArray没有足够的空间,
//则通过增幅扩展itemArray
if(count== capacity){
capacity += capacitylncrement;
Object[] tempArray = new Object[capacity];
if (front<rear){ //如果元素位于itemArray[front:rear-1]中
for(int i = front; i < count;i++){
tempArray[i]=itemArray[i];
}
System.out.println("woshishui");
} else { //否则,将元素分成2个区间
for(int i = 0;i<rear;i++){
tempArray[i]=itemArray[i];
}
for(int i = front;i<count;i++){
tempArray[i+capacitylncrement]=itemArray[i];
}
front+=capacitylncrement;
}
itemArray=tempArray;
//System.out.println("nishishui");
}
itemArray[rear]=newltem;
rear=(rear+1)%capacity;
count++;
}
public void print()
{
for(int i=0;i<capacity;i++)
System.out.println(itemArray[i]);
}
public static void main(String[] args){
Queue q=new Queue();
q.insert(11);
// System.out.println(q.rear);
// System.out.println(q.count);
// System.out.println(q.capacity);
// System.out.println("########################");
q.insert(12);
// System.out.println(q.rear);
// System.out.println(q.count);
// System.out.println(q.capacity);
// System.out.println("########################");
q.insert(13);
// System.out.println(q.rear);
// System.out.println(q.count);
// System.out.println(q.capacity);
// System.out.println("########################");
q.insert(14);
q.insert(15);
q.insert(16);
q.insert(17);
q.insert(18);
q.insert(19);
q.insert(20);
q.insert(21);
q.insert(22);
q.insert(23);
q.insert(24);
q.insert(25);
q.print();
}
}
解决方案 »
- swing怎么用代码促发监听事件
- 正则表达式 str.startsWith()的使用?
- jdic的问题,大家帮下!
- java 压缩 ,想将文件夹内的每个文件单独压缩并命名为原文件名.zip,怎么修改?请指教!
- 已经被javac编译的目录搞晕了,大家救命!!!!
- 在java中怎么把自己机器的IP取出来!
- 在solaris下用javamail出错,请指教!
- Jcreator如何开发jsp?感觉很不方便!
- 如何使SWING的控件上的文字随着控件的变换而改变大小
- 求大佬帮帮忙,这个CRC校验C语言函数怎么改成JAVA的?顺便帮我解释下为什么最后要取反?谢谢你
- JScrollPane中用布局为空的JPanel,如何实现JScrollPane的自动滚动?
- sql2005 连接问题?
if (front <rear){ //如果元素位于itemArray[front:rear-1]中
for(int i = front; i < count;i++)
{
tempArray[i]=itemArray[i];
}
System.out.println("woshishui");
这种情况,不理解,请高人指点迷津!
谢谢!!!