「java定长队列」JAVA中的队列

博主:adminadmin 2022-12-29 22:54:09 742

今天给各位分享java定长队列的知识,其中也会对JAVA中的队列进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java中怎么实现队列

public class QueueE {

private Object[] data=null;

private int maxSize; //队列容量

private int front; //队列头,允许删除

private int rear; //队列尾,允许插入

//构造函数

public Queue(){

this(10);

}

public Queue(int initialSize){

if(initialSize =0){

this.maxSize = initialSize;

data = new Object[initialSize];

front = rear =0;

}else{

throw new RuntimeException("初始化大小不能小于0:" + initialSize);

}

}

//判空

public boolean empty(){

return rear==front?true:false;

}

//插入

public boolean add(E e){

if(rear== maxSize){

throw new RuntimeException("队列已满,无法插入新的元素!");

}else{

data[rear++]=e;

return true;

}

}

//返回队首元素,但不删除

public E peek(){

if(empty()){

throw new RuntimeException("空队列异常!");

}else{

return (E) data[front];

}

}

//出队

public E poll(){

if(empty()){

throw new RuntimeException("空队列异常!");

}else{

E value = (E) data[front]; //保留队列的front端的元素的值

data[front++] = null; //释放队列的front端的元素

return value;

}

}

//队列长度

public int length(){

return rear-front;

}

}

用java编一个队列

自己写了个简单的实现

class QueueE{

private Object[] integerQueue;//用来当队列

public int tail;//队尾

public int size;//队的长度,也可以设置一个默认值,溢出时从新申请

public Queue(int size){

integerQueue=new Object[size];

this.size=size;

tail=-1;

}

/**

* 将元素插入队列

* @return 如果该元素已添加到此队列,则返回 true;否则返回 false

*/

public boolean offer(E e){

if(tail size-1){

tail++;

this.integerQueue[tail]=e;

return true;

}else{

return false;

}

}

/**

* 获取并移除此队列的头,如果此队列为空,则返回 null。

*/

public E poll(){

Object tmp;

if(tail=0){

tmp=this.integerQueue[tail];

tail--;

return (E)tmp;

}else{

return null;

}

}

}

java用数组实现队列

1.1. 队列的数据结构

队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

1.2. Java实现

QueueTest

package ch04;

public class QueueTest {

public static void main(String[] args) {

ArrayQueue queue = new ArrayQueue(10);

System.out.println(queue.isEmpty());

for (int i = 0; i 10; i++) {

queue.insert(i);

}

System.out.println(queue.isFull());

while (!queue.isEmpty()) {

System.out.println(queue.remove());

}

}

}

class ArrayQueue {

private int[] arrInt;// 内置数组

private int front;// 头指针

private int rear;// 尾指针

public ArrayQueue(int size) {

this.arrInt = new int[size];

front = 0;

rear = -1;

}

/**

* 判断队列是否为空

*

* @return

*/

public boolean isEmpty() {

return front == arrInt.length;

}

/**

* 判断队列是否已满

*

* @return

*/

public boolean isFull() {

return arrInt.length - 1 == rear;

}

/**

* 向队列的队尾插入一个元素

*/

public void insert(int item) {

if (isFull()) {

throw new RuntimeException("队列已满");

}

arrInt[++rear] = item;

}

/**

* 获得对头元素

*

* @return

*/

public int peekFront() {

return arrInt[front];

}

/**

* 获得队尾元素

*

* @return

*/

public int peekRear() {

return arrInt[rear];

}

/**

* 从队列的对头移除一个元素

*

* @return

*/

public int remove() {

if (isEmpty()) {

throw new RuntimeException("队列为空");

}

return arrInt[front++];

}

}

运行结果如下:

false

true

1

2

3

4

5

6

7

8

9

JAVA有没有可以限制容量大小的队列?

这个貌似没有,但是你可以用别的集合,判断当满了的时候,删除最旧的那一条,添加新的一条信息,这个数组和list都可以实现

java动态增长队列的实现

java里面支持队列这种数据结构,只要实现QueueE接口即可,比如下面实现了一个能容纳String的队列:

import java.util.*;

public class DynamicQueue{

private QueueString queue = new LinkedListString();

public void enque(String s) {

queue.offer(s);

}

public String deque() {

return queue.poll();

}

public static void main(String[] args){

DynamicQueue d_queue = new DynamicQueue();

d_queue.enque("123");

d_queue.enque("234");

d_queue.enque("345");

System.out.println(d_queue.deque());

System.out.println(d_queue.deque());

System.out.println(d_queue.deque());

}

}

JAVA中队列和栈的区别

队列(Queue):是限定只能在表的一端进行插入和在另一端进行删除操作的线性表;

栈(Stack):是限定只能在表的一端进行插入和删除操作的线性表。

区别如下:

一、规则不同

1. 队列:先进先出(First In First Out)FIFO

2. 栈:先进后出(First In Last Out )FILO

二、对插入和删除操作的限定不同

1. 队列:只能在表的一端进行插入,并在表的另一端进行删除;

2. 栈:只能在表的一端插入和删除。

三、遍历数据速度不同

1.

队列:基于地址指针进行遍历,而且可以从头部或者尾部进行遍历,但不能同时遍历,无需开辟空间,因为在遍历的过程中不影响数据结构,所以遍历速度要快;

2.

栈:只能从顶部取数据,也就是说最先进入栈底的,需要遍历整个栈才能取出来,而且在遍历数据的同时需要为数据开辟临时空间,保持数据在遍历前的一致性。

关于java定长队列和JAVA中的队列的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。