java 数据结构算法之 队列

    简介:队列是一种特殊的线性表,只能在前端(front)进行删除操作,只能在后端(rear)进行删除操作;队列分为顺序队列和循环队列;

    顺序队列:每次插入,队尾指针rear加一,每次删除,队首指针front加一;

    循环队列:同顺序队列一样的操作,但在队尾指针达到容器末端的时候,需要将队尾指针指向数组下标0的位置,以便于重复利用删除过值的空间;

    队列原理:队列,不如说数组队列,相当于也是一个数组的变体,通过数组下标的控制来实现增、删、查、判空、判满等功能;主要是用一个队首指针和队尾指针的位置来监听整个队列的变化,循环的实现也是如此;


    java 代码:

public class Queue {
//队列类
//基本的属性
private int maxSize; //队列长度
private int[] queArray; //队列数组
private int front; //队首指针
private int rear; //队尾指针
private int count; //元素个数

//队列构造器
public Queue(int s) {
maxSize = s;
queArray = new int[maxSize];
front = 0;
rear = -1;
count = 0;
}

//插入队尾元素
public void insert(int i) {
if (rear == maxSize-1) {
rear = -1;
}
queArray[++rear] = i;
count++;
}

//移除队首元素
public int remove() {
int temp = queArray[front++];
if (front == maxSize) {
front = 0;
}
count--;
return temp;
}

//查询队首元素
public int peekFront() {
return queArray[front];
}

//判断队列是否为空
public boolean isEmpty() {
return (count == 0);
}

//判断队列是否已满
public boolean isFull() {
return (count == maxSize);
}

//获取队列中的元素个数
public int size() {
return count;
}

//获取队列的长度
public int getMaxSize() {
return maxSize;
}

}


public class Main {
public static void main(String[] args) {
Queue myQueue = new Queue(4);
for(int i = 0; i < myQueue.getMaxSize(); i++) {
myQueue.insert(i);
}
//移除队首的  0 1 2
myQueue.remove();
myQueue.remove();
myQueue.remove();
//在队尾插入4  5  6
myQueue.insert(4);
myQueue.insert(5);
myQueue.insert(6);

while(!myQueue.isEmpty()) {
System.out.print(myQueue.remove() + "\t");
}
}
}






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值