单向链表
单项链表的实现
注意事项
- front头指针指向的是队列首元素的前一个位置
- rear尾指针指向队尾元素
这是代码实现
//首先先创建一个队列类
class MyQuene{
//队列的最大长度
private int maxSize;
//队列的头指针,只想队列的第一个元素的前一个位置 不是队列的一部分
private int front;
//队列的尾指针
private int rear;
//队列,模拟队列,来存放数据的
private int[] arr;
//构造器
public MyQuene(int maxSize) {
this.maxSize = maxSize;
arr = new int[maxSize];
front = -1;
rear =-1;
}
//判断队列是否满
public boolean isFull(){
return rear==maxSize-1;
}
//判断队列是否为空
public boolean isEmpty(){
return front==rear;
}
//添加数据到队列
public void add(int num){
//判断是否队列满了
if (isFull()){
throw new RuntimeException("队列已满");
}
rear++; //尾指针后移
arr[rear] = num; //将数据添加到队列中
}
//获取数据队列,出队列
public int get(){
if (isEmpty()){ //如果是空的,就抛异常
throw new RuntimeException("队列中是空的,请添加数据。。。。");
}
//不空,头指针后移一位
front++;
return arr[front];
}
//显示队列所有的数据
public void showQuene(){
//如果是空的
if (isEmpty()){
throw new RuntimeException("队列中是空的,请添加数据。。。。");
}
for (int i=front+1;i<=rear;i++){
System.out.printf("arr[%d]=%d\n",i,arr[i]);
}
}
//显示队列的头元素,注意不是取出数据
public void showFirst(){
//判空
if (isEmpty()){
throw new RuntimeException("队列中是空的,请添加数据。。。。");
}
System.out.println(arr[front+1]);
}
}