算法 之 队列的简单创建

相对于其他的数据结构,队列是十分简单的。这里也不多做讲解,只是用代码来写一个简单的队列,让实现插入和删除等操作:

package Queue;

public class Queue{
    private int maxSize;          //队列的容量存储大小
    private long[] queueArray;    //用数组来存储队列的对象
    private int front;            //队列的头指针
    private int rear;            //队列的尾指针
    private int nElems;            //用于表示队列的长度

    public Queue(int s){
        maxSize = s ;
        queueArray = new long[maxSize];
        front = 0;
        rear = -1;
        nElems = 0;
    }
    //向队列中加入数据
    public void insert(long value){
        if (rear == maxSize - 1) {
            rear = -1;
        }
        queueArray[++rear] = value;
        nElems++;
    }
    //从队列中移除数据
    public long remove(){
        long temp = queueArray[front++];
        if (front == maxSize) {
            front = 0;
        }
        nElems--;
        return temp;
    }
    //查看当前的队首元素
    public long peek(){
        return queueArray[front];
    }
    //判断队列是否为空
    public boolean isEmpty() {
        return (nElems == 0);
    }
    //判断队列是否已满
    public boolean isFull(){
        return (nElems == maxSize-1);
    }
    //队列的大小
    public int size(){
        return nElems;
    }
}

在代码中测试:

package Queue;

public class QueueApp {
    public static void main(String[] args){
        Queue queue = new Queue(5);
        queue.insert(10);
        queue.insert(20);
        queue.insert(30);
        queue.insert(40);

        queue.remove();
        queue.remove();

        queue.insert(22);
        queue.insert(33);
        while(!queue.isEmpty()){
            long n = queue.remove();
            System.out.print(" " + n);
        }
        System.out.println();
    }
}

结果:

 30 40 22 33
时间: 2024-10-30 21:40:18

算法 之 队列的简单创建的相关文章

Java数据结构和算法之数组与简单排序

一.数组于简单排序 数组 数组(array)是相同类型变量的集合,可以使用共同的名字引用它.数组可被定义为任何类型,可以是一维或多维.数组中的一个特别要素是通过下标来访问它.数组提供了一种将有联系的信息分组的便利方法. 一维数组 一维数组(one‐dimensional array )实质上是相同类型变量列表.要创建一个数组,你必须首先定义数组变量所需的类型.通用的一维数组的声明格式是: type var‐name[ ]; 获得一个数组需要2步: 第一步,你必须定义变量所需的类型. 第二步,你必

并发编程 17—— 使用内置条件队列实现简单的有界缓存

并发编程 01—— ConcurrentHashMap 并发编程 02—— 阻塞队列和生产者-消费者模式 并发编程 03—— 闭锁CountDownLatch 与 栅栏CyclicBarrier 并发编程 04—— Callable和Future 并发编程 05—— CompletionService : Executor 和 BlockingQueue 并发编程 06—— 任务取消 并发编程 07—— 任务取消 之 中断 并发编程 08—— 任务取消 之 停止基于线程的服务 并发编程 09——

RabbitMQ六种队列模式-简单队列模式

前言 RabbitMQ六种队列模式-简单队列 [本文]RabbitMQ六种队列模式-工作队列RabbitMQ六种队列模式-发布订阅RabbitMQ六种队列模式-路由模式RabbitMQ六种队列模式-主题模式 在官网的教程中,描述了如上六类工作队列模式: 简单队列模式:最简单的工作队列,其中一个消息生产者,一个消息消费者,一个队列.也称为点对点模式 工作模式:一个消息生产者,一个交换器,一个消息队列,多个消费者.同样也称为点对点模式 发布/订阅模式:无选择接收消息,一个消息生产者,一个交换器,多个

1102: 零起点学算法09——继续练习简单的输入和计算(a-b)

1102: 零起点学算法09--继续练习简单的输入和计算(a-b) Time Limit: 1 Sec  Memory Limit: 520 MB   64bit IO Format: %lldSubmitted: 2810  Accepted: 2161[Submit][Status][Web Board] Description 简单吧,不用多说了 Input 输入2个整数a,b,用空格隔开 Output 输出a-b的值 Sample Input 10 5 Sample Output 5 S

#查找算法#【1】简单查找:顺序、折半查找

•顺序查找 从线性表的一端开始,依次将每个记录的关键字与给定值进行比较,若某个记录的关键字等于给定值,表示查找成功,返回记录序号:若将线性表中所有记录都比较完,仍未找到关键字与给定值相等的记录,则表示查找失败,返回一个失败值. •折半查找 又称为二分查找.这种查找方法要求查找表的数据是线性结构保存,并且还要求查找表中的数据是按关键字由小到大有序排列. 顺序查找比较简单,依次用数组中的每个元素和要查找的元素进行对比即可.不再贴代码说明 折半查找是一种递归过程,每折半一次,可使查找范围缩小一半,当查

队列的简单学习

/**  * 1.在Java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口.  *   * Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取  * 或移除的元素.他们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常.  * 如果要使用前端而不移除该元素,使用element()或者pe

栈&队列的简单实现

栈的定义---Stack 栈只允许在栈的末端进行插入和删除的线性表.栈具有先进后出的特性. 栈可用顺序表实现也可用链表实现. 但: 由于栈只能在末端进行操作,应使用顺序表实现. 用顺序表实现,有如下优点: (1)方便管理 (2)效率高 (3)cpu高速缓冲存取利用率高 实现如下: 测试如下: 队列的定义---Queue 队列只允许在队尾插入,队头删除.具有先进先出的特性. 队列的实现可用顺序表也可用链表. 若采用顺序表,删除时需要移动元素.为了操作方便,采取链表实现. 实现如下: 测试如下: 栈

kNN算法python实现和简单数字识别

kNN算法 算法优缺点: 优点:精度高.对异常值不敏感.无输入数据假定 缺点:时间复杂度和空间复杂度都很高 适用数据范围:数值型和标称型 算法的思路: KNN算法(全称K最近邻算法),算法的思想很简单,简单的说就是物以类聚,也就是说我们从一堆已知的训练集中找出k个与目标最靠近的,然后看他们中最多的分类是哪个,就以这个为依据分类. 函数解析: 库函数 tile() 如tile(A,n)就是将A重复n次 a = np.array([0, 1, 2]) np.tile(a, 2) array([0,

linux_DNS服务器(正解/反解)的简单创建

什么是DNS? DNS(Domain Name System) 域名系统.它是如今互联网上能够相互通信的服务之一,对于现在的互联网特别特别重要的,因为在这个人们不能很好记忆数字IP地址的问题上,输入IP地址来访问其他的主机是很困难的,和不现实的,如果数字IP地址用我们所熟悉的各种名称(字符,例如:baidu taobao 等)就很好记忆啦.DNS就是来完成这个解析的功能的. DNS工作的原理: 首先,我们先了解一个内容,例如www.baidu.com, www.baidu.com 在DNS中是有