正文
java数组实现队列代码 java使用数组实现队列
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
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编写队列结构,求简易代码
package list;
import java.util.ArrayList;
//这是关于List用法,代表性的有LinkedList,ArrayList,Vector用法类似
public class ArrayListTest {
/**
* @param args
*/
public static void main(String[] args) {
ArrayListString list = new ArrayListString();
//添加
list.add("三国演义");
list.add("西游记");
list.add("水浒传");
list.add("红楼梦");
//修改
list.set(0, "三国志");
//查询某个元素是否存在
boolean flag = list.contains("西游记");
System.out.println(flag);
//删除
list.remove(2);//list.remove("水浒传");
//遍历
int size = list.size();
for ( int i=0; isize; i++)
{
String str =(String)list.get(i);//得到某个位置的元素
System.out.println(str);
}
}
}
////////////////////////下面是排序的
package list;
import java.util.ArrayList;
import java.util.Collections;
//这是关于List用法,代表性的有LinkedList,ArrayList,Vector用法类似
//排序
//Collections可以排序,还可以得到最大,最小数值,还可以将集合反转
public class SortListTest {
/**
* @param args
*/
@SuppressWarnings("unchecked")
public static void main(String[] args) {
ArrayList list = new ArrayList();
//添加
list.add(45);
list.add(67);
list.add(87);
list.add(23);
list.add(67);
Collections.sort(list);//升序
//Collections.sort(list,Collections.reverseOrder());//降序
//遍历
int size = list.size();
for ( int i=0; isize; i++ )
{
Integer str =(Integer)list.get(i);//得到某个位置的元素
System.out.println(str);
}
}
}
怎样用java代码实现一个队列
class StackT {
private VectorT v;
public Stack(){
v = new VectorT();
}
public T pop(){
if (v.size()==0) return null;
return v.get(v.size()-1);
}
public void push(T t){
v.add(t);
}
public boolean isEmpty(){
return v.size()==0;
}
}
class QueueT{
private VectorT v;
public Queue(){
v = new VectorT();
}
//入队列
public void enqueue(T t){
v.add(t);
}
//出队列
public T dequeue(){
if (v.size()==0) return null;
return v.get(0);
}
public boolean isEmpty(){
return v.size() == 0;
}
}
Java如何使用数组实现循环队列的案例
class Element{
int id;
String name;
Element(int a,String n){
id=a;name=n;
}
}
class SeqQueue{
int first,last,maxsize;
Element queue[];
SeqQueue(int i){
maxsize=i;
first=last=-1;
queue=new Element[i];
}
public void clear(){//置空
first=last=-1;
}
public boolean isEmpty(){//判空
if(first==-1)return true;
else return false;
}
public Element getFirst(){//取队列头元素
if(first==-1)return null;
else return queue[first+1];
}
public boolean isFull(){//判满
if((last+1)%maxsize==first)return true;
else return false;
}
public boolean enQueue(Element e){//入队
if(this.isFull())return false;
if(this.isEmpty())
first=last=0;
else
last=(last+1)%maxsize;
queue[last]=e;
return true;
}
public Element deQueue(){//出队
Element t=queue[first];
if(this.isEmpty())return null;
if(first==last){
queue[first]=null;
this.clear();
return t;
}
queue[first]=null;
first=(first+1)%maxsize;
return t;
}
public int getLength(){//队列长度
if(last=first)return last-first+1;
else return maxsize-(first-last)+1;
}
public void display(){//打印所有元素
int i,j;
for (i=first,j=0;jthis.getLength();i=(i+1)%maxsize,j++)
System.out.println(queue[i].id);
}
}
java数组方法pop() push() unshift() shift()
JS中的数组提供了四个操作,以便让我们实现队列与堆栈!
小理论:
队列:先进先出
堆栈:后进先出
实现队列的方法:
shift:从集合中把第一个元素删除,并返回这个元素的值。
unshift: 在集合开头添加一个或更多元素,并返回新的长度
push:在集合中添加元素,并返回新的长度
pop:从集合中把最后一个元素删除,并返回这个元素的值。
这是原来老赵写的关于数组队列的代码,觉得有点问题,所以改了一下
1 // Usage:装载并运行函数
2 // 队列机制
3 var Resource = (function () {
4 var waitingCallbacks = [];
5 var execute = function (cb) {
6 setTimeout(function () {
7 cb(function () {
8 if (waitingCallbacks.length == 0) return;
9 execute(waitingCallbacks.shift());
10 });
11 }, 0);
12 };
13 var register = function (cb) {
14 if (waitingCallbacks.length == 0) {
15 execute(cb);
16 } else {
17 waitingCallbacks.push(cb);
18 }
19 }
20 return {
21 register: register,
22 state: 1
23 }
24 })();
原来代码中是
execute(waitingCallbacks.unshift());现在我改成了
execute(waitingCallbacks.shift());当你从集合中执行了函数后,它应该从集合中删除,而不是再添加,呵呵。
关于java数组实现队列代码和java使用数组实现队列的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。