简介
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
在队列这种数据结构中,最先插入的元素将是最先被删除的元素;反之最后插入的元素将最后被删除的元素,因此队列又称为“先进先出”(FIFO—first in first out)的线性表。
队列空的条件: front=rear
队列满的条件: rear = MAXSIZE
/**
* simulate queue struct by java
*
* @author Bruce
* @date Sep 8, 2011
* @version 1.0
*/
public class Queue {
private int maxSize;
private long[] queueArray;
private int front;// the head of queue
private int rear;// the end of queue
private int nItems;
/**
* Constructor a queue,the size is s;now the queue is null, and the front is
* zero and the rear is negative one
*
* @param s
*/
public Queue(int s) {
maxSize = s;
queueArray = new long[maxSize];
front = 0;
rear = 0;
nItems = 0;
}
public void insert(long j) {
// if the the inserted items great the size of queue,
// the rear return the initial value and the next item will
// override the corresponding value
if (rear == maxSize)
rear = 0;
queueArray[rear++] = j;
nItems++;// the count of the items
}
/**
* remove the item from the 'front' position,every time the front will be
* added one
*/
public long remove() {
long temp = queueArray[front++];
// if the front equals the size of queue,the front will return the
// initial value
if (front == maxSize)
front = 0;
nItems--;
if (nItems < 0)
nItems = 0;
return temp;
}
public long peekFront() {
return queueArray[front];
}
public boolean isEmpty() {
return (nItems == 0);
}
public boolean isFull() {
return (nItems == maxSize);
}
public int size() {
return nItems;
}
public static void main(String[] args) {
Queue queue = new Queue(3);
queue.insert(3);
queue.insert(6);
queue.insert(8);
// queue.insert(4);
System.out.println("size:" + queue.size());
System.out.println(queue.peekFront());
queue.remove();
System.out.println(queue.peekFront());
queue.remove();
System.out.println(queue.peekFront());
queue.remove();
// System.out.println(queue.peekFront());
// queue.remove();
System.out.println("size:" + queue.size());
}
}
分享到:
相关推荐
Java队列模拟实现是一个典型的计算机科学中的数据结构应用,它主要涉及了Java编程语言和队列数据结构。在这个工程中,开发者已经创建了一个基于图形用户界面(GUI)的应用程序,用于演示和操作队列的各种功能。以下...
总之,`PriorityQ.java`文件可能是一个简单的数组实现优先队列的示例,通过分析这个文件,我们可以学习到如何利用数组数据结构实现优先队列,以及理解其核心的插入、删除和查找操作。同时,这也能帮助我们更好地掌握...
为了使模拟队列更具实际应用价值,通常会设计一个用户界面,让用户可以直观地看到队列的状态并执行操作。在Java中,可以使用Swing或JavaFX库创建图形用户界面(GUI)。界面应包括按钮来执行enqueue、dequeue、peek等...
这是模拟队列的实现,没有源码,源码在另外一个上传的文件中,基本实现了队列的各种操作。
这个系统可以通过创建多个线程来代表等待服务的客户,一个线程代表叫号服务,通过队列数据结构来有序地管理这些线程。下面我们将详细探讨如何使用Java实现这样的系统。 首先,我们需要理解队列数据结构。队列是一种...
例如,一个简单的模拟阻塞队列的代码实现可能如下: ```java import java.util.concurrent.*; public class BlockingQueueExample { public static void main(String[] args) { // 创建一个固定大小的阻塞队列 ...
为了实现这一转换,我们需要在某些时刻将一个栈中的元素全部弹出并压入另一个栈中,以确保出队操作能正确地从队列的前端(即栈底)取出元素。 下面是如何使用两个栈来模拟队列的详细步骤: 1. **初始化**:创建两...
在这个特定的场景中,“JAVA 队列 实现卡车运输过程模拟”旨在利用Java的队列数据结构来模拟一个煤矿的物流过程,其中六辆自卸卡车负责将煤炭从矿口运输到铁路。这个系统包含两个关键设备:装煤设备(Loaders)和...
新进程被放入最高优先级的队列,如果在规定的时间片内未完成,将会被降级到下一个队列。低优先级队列的进程通常会得到更长的时间片,以确保I/O密集型进程有机会执行。这种设计兼顾了交互性和系统效率,避免了单一...
链式队列是由一系列节点构成的,每个节点包含数据和指向下一个节点的引用。在Java中,LinkedList类可以方便地用于实现链式队列。链式队列的优势在于其动态性,添加和删除元素时无需移动其他元素,只需改变节点间的...
【标题】"顾客队列模拟系统(Java实现)"是一个基于Java编程语言设计的应用程序,旨在模拟现实生活中顾客在银行、医院或超市等场所的排队情况。这个系统能够动态地处理柜台数量和顾客等待人数的变化,帮助理解并优化...
本实现是用Java编程语言完成的,Java提供了一个内置的PriorityQueue类,但这里可能是自定义实现,以便更好地理解其工作原理和优化。 1. **优先队列的基本概念** - 优先队列是一个队列,但它不同于普通的FIFO(先进...
银行业务队列简单模拟 java银行业务队列简单模拟.zipjava银行业务队列简单模拟.zipjava银行业务队列简单模拟.zipjava银行业务队列简单模拟.zipjava银行业务队列简单模拟.zip
银行业务队列简单模拟 java银行业务队列简单模拟源码.zipjava银行业务队列简单模拟源码.zipjava银行业务队列简单模拟源码.zipjava银行业务队列简单模拟源码.zip
在Java中,可以使用ArrayList或LinkedList来模拟队列,主要的操作有入队(enqueue)和出队(dequeue)。 下面,我们将分别探讨如何在Java中模拟这两个数据结构: **模拟栈:** ```java public class Stack { ...
综上所述,JAVA模拟操作系统对进程的调度是一个涵盖进程管理、线程同步、调度算法等多个核心概念的实践项目。通过编写和调试这样的代码,开发者能更深刻地理解操作系统的内部运作,并提升并发编程能力。
试用java.util.Stack泛型栈作为父类,用另一个泛型栈对象作为成员变量,模拟实现一个泛型子类Queue,当存储元素的第1个栈的元素超过dump时,再有元素入队列就倒入第2栈。除提供无参构造函数Queue( )外,其它所有队列...
在本项目中,“银行业务队列简单模拟java源码.zip”是一个包含Java代码的压缩包,主要用于模拟银行的业务处理过程。这个模拟主要是通过队列数据结构来实现的,以便理解银行服务窗口如何处理客户的请求,如存款、取款...
在实际编程实现时,可以使用C++的标准库容器如`std::deque`来模拟队列,因为`std::deque`支持快速的随机访问和删除,效率较高。同时,也可以使用链表结构自定义队列实现,这样有利于理解队列的工作原理。 总结来说...
以下是使用LinkedList模拟队列的实现: 1. 创建LinkedList实例。 ```java LinkedList<Object> queue = new LinkedList(); ``` 2. 实现入队操作。LinkedList的addLast()方法将元素添加到列表的末尾。 ```java ...