队列 java

队列其实 所指生活中排队的现象,去商场购物,付款时需要排队, 买饭时需要排队, 好多事情都是需要排队, 排在第一位的则先处理,结束后, 后面的人都像前移动一位,在开发中也有好多这样的事情需要处理,如文件的下载,短信的发送功能, 等这些都是需要队列方式实现。好了, 废话不多说, 详情见下面代码!

package com.fanzhang;

class Queue //队列类
{
private int maxSize; //队列长度,由构造函数初始化
private long[] queArray; // 队列
private int front; //队头
private int rear; //队尾
private int nItems; //元素的个数
//--------------------------------------------------------------
public Queue(int s) // 构造函数
{
maxSize = s;
queArray = new long[maxSize];
front = 0;
rear = -1;
nItems = 0;
}
//--------------------------------------------------------------
public void insert(long j) // 进队列
{
if(rear == maxSize-1) // 处理循环
rear = -1;
queArray[++rear] = j; // 队尾指针加1,把值j加入队尾
nItems++;
}
//--------------------------------------------------------------
public long remove() // 取得队列的队头元素。
{
long temp = queArray[front++]; // 取值和修改队头指针
if(front == maxSize) // 处理循环
front = 0;
nItems--;
return temp;
}
//--------------------------------------------------------------
public long peekFront() // 取得队列的队头元素。该运算与 remove()不同,后者要修改队头元素指针。
{
return queArray[front];
}
//--------------------------------------------------------------
public boolean isEmpty() // 判队列是否为空。若为空返回一个真值,否则返回一个假值。
{
return (nItems==0);
}
//--------------------------------------------------------------
public boolean isFull() // 判队列是否已满。若已满返回一个真值,否则返回一个假值。
{
return (nItems==maxSize);
}
//--------------------------------------------------------------
public int size() // 返回队列的长度
{
return nItems;
}
//--------------------------------------------------------------
} 

public class IntegerQueue
{
public static void main(String[] args)
{
Queue theQueue = new Queue(5); // 队列有5个元素

theQueue.insert(10); // 添加4个元素
theQueue.insert(20);
theQueue.insert(30);
theQueue.insert(40);

theQueue.remove(); // 移除3个元素
theQueue.remove(); // (10, 20, 30)
theQueue.remove();

theQueue.insert(50); // 添加4个元素
theQueue.insert(60);
theQueue.insert(70);
theQueue.insert(80);

while( !theQueue.isEmpty() ) // 遍历队列并移除所有元素
{
long n = theQueue.remove(); // (40, 50, 60, 70, 80)
System.out.print(n);
System.out.print(" ");
}
System.out.println("");
}
} 
时间: 2024-12-09 08:42:59

队列 java的相关文章

java中使用FIFO队列:java.util.Queue实现多台服务器发邮件的代码

代码下载地址:http://www.zuidaima.com/share/1838230785625088.htm 原文:java中使用FIFO队列:java.util.Queue实现多台服务器发邮件的代码 最近由于zuidaima.com注册用户的增多,qq企业邮箱发送邮件会被封禁账号导致注册后面的用户收不到周总结,所以紧急开发了一套多账号,多服务器发送邮件的程序. 大概的设计思路如下: 1.服务器可以无限扩展,但由于qq企业邮箱是限定域名,所以要想多服务器还得有多域名,多账号也不行. 2.最

java中使用队列:java.util.Queue (转)

Queue接口与List.Set同一级别,都是继承了Collection接口.LinkedList实现了Queue接 口.Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用.BlockingQueue 继承了Queue接口. 队列是一种数据结构.它有两个基本操作:在队列尾部加人一个元素,和从队列头部移除一个元素就

队列-java代码

public class QueueDemo { private int maxSize; private long[] queueArray; // 队列的头,实际是数组的尾 private int header; // 队列的尾,实际是数组的头 private int footer; private int nElems; public QueueDemo(int size){ maxSize = size; queueArray = new long[maxSize]; header =

爬虫6:多页面队列Java爬虫

之前写过很多单页面python爬虫,感觉python还是很好用的,这里用java总结一个多页面的爬虫,迭代爬取种子页面的所有链接的页面,全部保存在tmp路径下. 1 序言 实现这个爬虫需要两个数据结构支持,unvisited队列(priorityqueue:可以适用pagerank等算法计算出url重要度)和visited表(hashset:可以快速查找url是否存在):队列用于实现宽度优先爬取,visited表用于记录爬取过的url,不再重复爬取,避免了环.java爬虫需要的工具包有httpc

剑指offer【05】- 用两个栈实现队列(java)

题目:用两个栈实现队列 考点:栈和队列 题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 解题思路:每次psuh是时先将stack2清空放入stck1(保证选入的一定在栈底),stack2始终是用来删除的.在pop前,先将stack1中中的数据清空放入stack2(保存后入的在栈底),stack1始终用于push. 1 import java.util.Stack; 2 3 public class Solution { 4 Stack<Intege

队列java实现

队列是一种线性数据结构,是一种运算受限的线性表,只允许在队尾插入,在队头删除.运算规则是先进先出.恰好和栈相反.栈是先进后出.因为栈只在栈顶做删除和插入. 队列按照存储结构可以分为顺序队列和链式队列.顺序队列采用数组实现,链式队列采用节点的方式实现. //顺序队列 1 package queue; 2 //1.队列是一种运算受限的线性表,运算规则是先进先出.只能在队头和队尾进行操作 3 //2.队列由数据域,队头,队尾组成 4 //3.队列在队尾进行插入操作,在队头进行删除操作 5 public

数据结构之链表、栈和队列 java代码实现

定义抽象节点类Node: 1 package cn.wzbrilliant.datastructure; 2 3 /** 4 * 节点 5 * @author ice 6 * 7 */ 8 public abstract class Node { 9 private Node next; 10 11 public Node(){ 12 next=null; 13 } 14 15 public void setNext(Node nextNode){ 16 next=nextNode; 17 }

数据结构之队列java版

//java由于泛型的擦除,用起来十分不方便 abstract class BaseQueue<T>{ abstract boolean enQueue(T x); abstract T front(T x);//注意这里也要和c++ 区别一下 这里直接返回首部元素 abstract boolean delQueue(); abstract void clear(); } class Queue<T> extends BaseQueue<T>{ int mMaxSize

Java数据结构与算法(第四章栈和队列)

本章涉及的三种数据存储类型:栈.队列和优先级队列. 不同类型的结构 程序员的工具 数组是已经介绍过的数据存储结构,和其他结构(链表.树等等)一样,都适用于数据应用中作数据记录. 然而,本章要讲解的是数据结构和算法更多的是作为程序员的工具来运用.它们组要作为构思算法的辅助工具,而不是完全的数据存储工具.这些数据结构的生命周期比那些数据库类型的结构要短的多.在程序操作执行期间它们才被创建,通常它们去执行某项特殊的任务,当完成之后,它们就被销毁. 受限访问 在数组中,只要知道下标就可以访问数据项.或顺