Java数据结构之有效队列定义与用法示例
本文实例讲述了Java数据结构之有效队列定义与用法。分享给大家供大家参考,具体如下:
/** * @描述 有序对列 * 从任何位置插入数据都是有序的 * @项目名称 Java_DataStruct * @包名 com.java.stack * @类名 Queue * @author chenlin */ public class SequeQueue { private long[] arr; private int maxSize;// 最大空间 private int len;// 有效长度 public SequeQueue(int size) { this.maxSize = size; this.arr = new long[maxSize]; this.len = 0; } /** *插入数据 * * @param value */ public void insert(long value) { int i; for (i = 0; i < len; i++) { //得到i if (value > arr[i]) { break; } } //移动数据,把前面的数据往后移动一位 for (int j = len; j > i; j--) { arr[j] = arr[j - 1]; } arr[i] = value; len ++; } /** * 移除数据,每次移除最后一位,长度-- * 数组从0到len - 1; */ public long remove() { long value = arr[len - 1]; len --; return value; } /** * 判断是否为空 * * @return */ public boolean isEmpty() { return (len == 0); } /** * 判断是否满了 * * @return */ public boolean isFull() { return (len == maxSize); } /** * 获得队列的有效长度 * * @return */ public int size() { return len; } public static void main(String[] args) { SequeQueue queue = new SequeQueue(8); queue.insert(22); queue.insert(33); queue.insert(44); queue.insert(534); queue.insert(21); queue.insert(55); System.out.println("我们测试结果:"); while (!queue.isEmpty()) { System.out.println(queue.remove()); } } }
运行结果:
更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总》
希望本文所述对大家java程序设计有所帮助。
相关推荐
-
java数据结构与算法之双向循环队列的数组实现方法
本文实例讲述了java数据结构与算法之双向循环队列的数组实现方法.分享给大家供大家参考,具体如下: 需要说明的是此算法我并没有测试过,这里给出的相当于伪代码的算法思想,所以只能用来作为参考! package source; public class Deque { private int maxSize; private int left; private int right; private int nItems; private long[] myDeque; //constructor p
-
java 数据结构之栈与队列
java 数据结构之栈与队列 一:对列 队列是一种先进先出的数据结构 实现代码: package Queue; /* * 使用java构建队列,并模拟实现队列的入队和出对方法 */ public class Queue { //队列类 private int maxSize; //定义队列的长度 private int[] arrQueue; //队列 private int rear; //定义队列的尾指针 private int front; //定义队列的头指针 private int e
-
Java数据结构之循环队列简单定义与用法示例
本文实例讲述了Java数据结构之循环队列简单定义与用法.分享给大家供大家参考,具体如下: 一.概述: 1.原理: 与普通队列的区别在于循环队列添加数据时,如果其有效数据end == maxSize - 1(最大空间)的话,end指针又移动到-1的位置 删除数据时,如果head== maxSize时 head指针移动到0的位置 2.示例图: 二.实现代码: package com.java.queue; /** * @描述 对列 * @项目名称 Java_DataStruct * @包名 com.
-
Java数据结构之队列的简单定义与使用方法
本文实例讲述了Java数据结构之队列的简单定义与使用方法.分享给大家供大家参考,具体如下: 一.概述: 1.说明: 队列的原则时先进先出,就像生活中排队取票一样,谁排在前面谁先得到 2.有五个属性: 1)数组元素 2)最大空间 3)长度 4)队头 5)队尾 3.示例图: 二.代码实现 /** * @描述 对列 * @项目名称 Java_DataStruct * @包名 com.java.stack * @类名 Queue * @author chenlin * @version 1.0 * @S
-
java 数据结构中栈和队列的实例详解
java 数据结构中栈和队列的实例详解 栈和队列是两种重要的线性数据结构,都是在一个特定的范围的存储单元中的存储数据.与线性表相比,它们的插入和删除操作收到更多的约束和限定,又被称为限定性的线性表结构.栈是先进后出FILO,队列是先进先出FIFO,但是有的数据结构按照一定的条件排队数据的队列,这时候的队列属于特殊队列,不一定按照上面的原则. 实现栈:采用数组和链表两种方法来实现栈 链表方法: package com.cl.content01; /* * 使用链表来实现栈 */ public cl
-
Java模拟栈和队列数据结构的基本示例讲解
栈和队列: 一般是作为程序员的工具,用于辅助构思算法,生命周期较短,运行时才被创建: 访问受限,在特定时刻,只有一个数据可被读取或删除: 是一种抽象的结构,内部的实现机制,对用户不可见,比如用数组.链表来实现栈. 模拟栈结构 同时,只允许一个数据被访问,后进先出 对于入栈和出栈的时间复杂度都为O(1),即不依赖栈内数据项的个数,操作比较快 例,使用数组作为栈的存储结构 public class StackS<T> { private int max; private T[] ary; priv
-
Java数据结构之队列(动力节点Java学院整理)
队列的定义: 队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表. (1)允许删除的一端称为队头(Front). (2)允许插入的一端称为队尾(Rear). (3)当队列中没有元素时称为空队列. (4)队列亦称作先进先出(First In First Out)的线性表,简称为FIFO表. 队列的修改是依先进先出的原则进行的.新来的成员总是加入队尾,每次离开的成员总是队列头上的(不允许中途离队). 队列的存储结构及实现 队列的顺序存储结构 (1) 顺序队列的定义: 队列
-
Java数组模拟优先级队列数据结构的实例
优先级队列 如果我们给每个元素都分配一个数字来标记其优先级,不妨设较小的数字具有较高的优先级,这样我们就可以在一个集合中访问优先级最高的元素并对其进行查找和删除操作了.这样,我们就引入了优先级队列 这种数据结构. 优先级队列(priority queue) 是0个或多个元素的集合,每个元素都有一个优先权,对优先级队列执行的操作有(1)查找(2)插入一个新元素 (3)删除 一般情况下,查找操作用来搜索优先权最大的元素,删除操作用来删除该元素 .对于优先权相同的元素,可按先进先出次序处理或按任意优先
-
Java数据结构之有效队列定义与用法示例
本文实例讲述了Java数据结构之有效队列定义与用法.分享给大家供大家参考,具体如下: /** * @描述 有序对列 * 从任何位置插入数据都是有序的 * @项目名称 Java_DataStruct * @包名 com.java.stack * @类名 Queue * @author chenlin */ public class SequeQueue { private long[] arr; private int maxSize;// 最大空间 private int len;// 有效长度
-
Java数据结构之优先级队列(PriorityQueue)用法详解
目录 概念 PriorityQueue的使用 小试牛刀(最小k个数) 堆的介绍 优先级队列的模拟实现 Top-k问题 概念 优先级队列是一种先进先出(FIFO)的数据结构,与队列不同的是,操作的数据带有优先级,通俗的讲就是可以比较大小,在出队列的时候往往需要优先级最高或者最低的元素先出队列,这种数据结构就是优先级队列(PriorityQueue) PriorityQueue的使用 构造方法 这里只介绍三种常用的构造方法 构造方法 说明 PriorityQueue() 不带参数,默认容量为11 P
-
Java中的匿名对象定义与用法实例分析
本文实例讲述了Java中的匿名对象定义与用法.分享给大家供大家参考,具体如下: 一 点睛 匿名对象是指没有名字的对象.实际上,对于对象实例化操作来讲,对象真正有用的部分是在堆内存中,而栈内存中只是保存了一个对象的引用名称(严格来讲是对象在堆内存的地址),所谓匿名对象是指,只开辟了堆内存空间,而没有栈内存指向的对象. 二 实战 1 代码 public class NoNameObject { public void say() { System.out.println("匿名对象是只开辟了堆内存空
-
Java数据结构之优先级队列(堆)图文详解
目录 一.堆的概念 二.向下调整 1.建初堆 2.建堆 三.优先级队列 1.什么是优先队列? 2.入队列 3.出队列 4.返回队首元素 5.堆的其他TopK问题 总结: 总结 一.堆的概念 堆的定义:n个元素的序列{k1 , k2 , … , kn}称之为堆,当且仅当满足以下条件时: (1)ki >= k2i 且 ki >= k(2i+1) ——大根堆 (2) ki <= k2i 且 ki <= k(2i+1) ——小根堆 简单来说: 堆是具有以下性质的完全二叉树:(1)每个结点的
-
Java数据结构之简单链表的定义与实现方法示例
本文实例讲述了Java数据结构之简单链表的定义与实现方法.分享给大家供大家参考,具体如下: 一.概述: 1.原理: 只有一个数据项(链接点Link),每个数据插入时都是对第一个数据的引用. 2.插入数据说明: 当链表没有数据时,插入的值就是第一个数据,如果链表里有数据,就把当前的数据的next指针指向第一个数据. 3.插入数据图: 4.特点:先进后出 5.实现功能: 数据插入,指定位置插入,显示,查询,删除等 6.删除原理 7.插入头节点原理 二.实现: 1.创建节点 /** * @描述 节点
-
Java开发中synchronized的定义及用法详解
概念 是利用锁的机制来实现同步的. 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程中的协调机制,这样在同一时间只有一个线程对需同步的代码块(复合操作)进行访问.互斥性我们也往往称为操作的原子性. 可见性:必须确保在锁被释放之前,对共享变量所做的修改,对于随后获得该锁的另一个线程是可见的(即在获得锁时应获得最新共享变量的值),否则另一个线程可能是在本地缓存的某个副本上继续操作从而引起不一致. 用法 修饰静态方法: //同步静态方法 public synchronized
-
Android编程图片操作类定义与用法示例【拍照,相册选图及裁剪】
本文实例讲述了Android编程图片操作类定义与用法.分享给大家供大家参考,具体如下: 主界面类:拍照及选择相册图片 import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import androi
-
javascript递归函数定义和用法示例分析
递归函数:是指函数直接或间接调用函数本身,则称该函数为递归函数. 这句话理解起来并不难,从概念上出发,给出以下的例子: function foo(){ console.log("函数 foo 是递归函数."); foo(); } 这个例子的 foo 函数就是一个递归函数. 当你把这个函数拿到浏览器上运行的时候,你会发现内存溢出了,为什么呢?因为这个递归函数没有停止处理或运算的出口,因此这个递归函数就演变为一个死循环. 那如何使用递归呢? 使用递归函数必须要符合两个条件: 1. 在每一次
-
Java数据结构之稀疏矩阵定义与用法示例
本文实例讲述了Java数据结构之稀疏矩阵定义与用法.分享给大家供大家参考,具体如下: 稀疏矩阵非零元素的三元组类: package com.clarck.datastructure.matrix; /** * 稀疏矩阵的压缩存储 * * 稀疏矩阵非零元素的三元组类 * * @author clarck * */ public class Triple implements Comparable<Triple> { // 行号,列号, 元素值,默认访问权限 int row, colum, val
随机推荐
- JSP 多条SQL语句同时执行的方法
- SQLite数据库安装及基本操作指南
- FusionCharts图表显示双Y轴双(多)曲线
- 各种一句话木马大全
- JS三级可折叠菜单实现方法
- JQuery实现Repeater无刷新批量删除(附后台asp.net源码)
- CakePHP去除默认显示的标题及图标的方法
- thinkphp配置文件路径的实现方法
- 点击广告后才能获得下载地址
- Python自定义scrapy中间模块避免重复采集的方法
- 详谈js使用in和hasOwnProperty获取对象属性的区别
- C#简单查询SQLite数据库是否存在数据的方法
- javascript FAQ函数(提问+回复)
- c语言尾队列tailq使用示例分享
- iOS实现Pad上菜单弹出界面
- android 调用系统的照相机和图库实例详解
- Android 日期和时间的使用实例详解
- 使用python实现链表操作
- webpack-dev-server自动更新页面方法
- 在Windows Server 2019上配置NAS的方法