简单聊聊队列是怎么一回事
程序员文章站
2022-03-08 08:06:37
...
-
理论
作为数据结构的一种,队列的应用范围其实也是非常广泛的。所谓队列其实设定的存取模式就取自于现实生活中的排队模型,排队也就是所谓的先来者先出。数据结构中的队列同样也是这种用法,你可以利用数组或者链表的任意一个形式去实现一个队列,但是要注意对于一个队列的操作,应当只有入队和出队操作。
利用代码实现时,我们一般会定义一个队头指针和队尾指针,当执行一个出队操作时,队头指针往后移了一位,那么我们便认为刚才的队头指针所指的元素已经出了这个队列了。同样的道理,入队操作也可以进行类比。 -
代码
因为队列的模型理解起来较为简单,我们就仅用一个数组来实现队列。
package queue;
public class Demo1 {
int values[] = new int[3]; //创建一个容量为3的队列,本质是数组
int head=0,tail=0; //定义队头和队尾指针的位置
public boolean enqueue(int k){
if(tail-head==3){ //此时表示队列已满
return false;
}else{
if (tail==values.length){ //表示队列虽然未满,但是队尾指针已经指向最后一位了
for(int i=head;i<tail;i++){ //对上述的情况进行处理,即数据迁移
values[i-head] = values[i];
}
tail-=head; //此时的队尾指针需要重新指定位置
head=0;
values[tail]=k;
tail++;
}
values[tail] = k;
tail++;
return true;
}
}
public int dequeue(){
if(head==tail){
return -1;
}
int s = values[head];
this.head++;
return s;
}
public String toString(){
String str = "";
for(int i=head;i<tail;i++){
str+=values[i]+" ";
}
return str;
}
public static void main(String args[]){
Demo1 demo1 = new Demo1();
demo1.enqueue(1);
demo1.enqueue(2);
demo1.dequeue();
System.out.println(demo1.toString());
}
}
上一篇: 猫狗队列