您的位置:首页 > 理论基础 > 数据结构算法

[Java数据结构]线性表之队列Queue

2017-12-11 19:52 591 查看

》》原理

就像排队,先来的先走,后来的等在后面。

》》思路

定义一个数组存放,头指针front指向表头,每次移走一个元素front+1,rear指向头尾,每次增加一个元素rear+1。注意移走和插入的指针指向的区别。

》》代码

package 栈和队列;

class queueArr {

private int maxSize;
private long[] queArr;
private int front;// 队头
private int rear;// 队尾
private int n;

public queueArr(int s) {
maxSize = s;
queArr = new long[maxSize];
front = 0;
rear = -1;
n = 0;

}

public void insert(int i) {

if (!isFull()) {
//		if (rear == maxSize - 1) {//如果不加这个判断,就会出现数组越界报错了
//			rear = -1;// 如果加上这句,队尾绕回低端,后加的数会从头排进去
//		}
// 如果是低端,rear+1=0,又是数组
queArr[++rear] = i;
n++;
}
}

public long remove() {

long temp = queArr[front++];
if (front == maxSize) {// 如果头指针等于长度了,头指针重置为0
front = 0;
}
if (!isEmpty()) {
n--;
}// 为空后n就不再减下去
return temp;

}

public void peekn() {
System.out.println("数量" + n);
}

public boolean isEmpty() {
return n == 0;
}

public boolean isFull() {
return n == maxSize;
}

}

public class Queue {

public static void main(String[] args) {
queueArr arr = new queueArr(5);
arr.insert(1);
arr.insert(3);
arr.insert(4);
arr.insert(5);
arr.insert(7);
arr.insert(9);
arr.insert(9);
arr.insert(9);
arr.insert(9);

arr.remove();
arr.peekn();

while (!arr.isEmpty()) {
long n = arr.remove();
System.out.print(n + " ");

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 线性表
相关文章推荐