文章目录

  • 普通队列
    • 数组实现
    • java代码实现
      • 单元测试
      • 控制台打印
    • 链表实现
      • java代码实现
      • 单元测试
      • 控制台打印
    • LinkedList队列使用
    • 优先队列:PriorityQueue使用
    • 数组实现
      • java代码实现
      • 单元测试
      • 控制台打印
    • 链表实现
      • java代码实现
      • 单元测试
      • 控制台打印

普通队列

概念:先入先出

数组实现

java代码实现

package csdn.dreamzuora.queue;/*** @author weijie* @date 2020/10/15 19:54* Description: 先入先出*/
public class ArrayQueue {int[] queue;/*** 队头*/int head = 0;/*** 队尾*/int tail = 0;/*** 初始化* @param size*/public ArrayQueue(int size) {this.queue = new int[size];}/*** 入栈* @param data*/public boolean enqueue(int data){if (tail >= queue.length){return false;}queue[tail++] = data;return true;}/*** 出栈* @return*/public int dequeue(){return queue[head++];}public boolean isEmpty(){/*** 队头等于队尾此时表示队列为空*/if (head == tail){return true;}return false;}}

单元测试

package csdn.dreamzuora.queue;import org.junit.Test;import static org.junit.Assert.*;/*** Title:* Description:** @version 1.0* @author: weijie* @date: 2020/10/16 10:25*/
public class ArrayQueueTest {ArrayQueue queue = new ArrayQueue(10);@Testpublic void enqueue() {System.out.print("入队列:");for (int i = 0; i < 10; i++){System.out.print("->" + i);queue.enqueue(i);}System.out.println();System.out.print("出队列:");while (!queue.isEmpty()){System.out.print("->" + queue.dequeue());}}
}

控制台打印

链表实现

java代码实现

package csdn.dreamzuora.queue;/*** Title: Node* Description:** @version 1.0* @author: weijie* @date: 2020/10/16 9:54*/
public class Node {int data;Node next;public Node(int data) {this.data = data;}
}
package csdn.dreamzuora.queue;/*** @author weijie* @date 2020/10/15 19:56* Description:*/
public class LinkedQueue {Node head;Node tail;/*** 入栈* @return*/public void enqueue(int data){Node appendNode = new Node(data);if (tail == null){tail = appendNode;head = appendNode;}else {tail.next = appendNode;tail = appendNode;}}/*** 出栈*/public int dequeue(){int data = head.data;head = head.next;return data;}public boolean isEmpty(){if (head == null){return true;}return false;}
}

单元测试

package csdn.dreamzuora.queue;import org.junit.Test;import java.util.LinkedList;import static org.junit.Assert.*;/*** Title:* Description:** @version 1.0* @author: weijie* @date: 2020/10/16 10:25*/
public class LinkedQueueTest {LinkedQueue queue = new LinkedQueue();@Testpublic void enqueue() {System.out.print("入队列:");for (int i = 0; i < 10; i++){System.out.print("->" + i);queue.enqueue(i);}System.out.println();System.out.print("出队列:");while (!queue.isEmpty()){System.out.print("->" + queue.dequeue());}}
}

控制台打印

LinkedList队列使用

package csdn.dreamzuora.queue;import org.junit.Test;import java.util.LinkedList;/*** Title: 链表当作队列使用* Description:** @version 1.0* @author: weijie* @date: 2020/10/19 16:52*/
public class LinkedListTest {@Testpublic void example(){LinkedList<Integer> queue = new LinkedList<>();/*** 入队*/queue.offer(1);queue.offer(2);queue.offer(3);/*** 出队*/while (!queue.isEmpty()){System.out.println(queue.poll());}}}

优先队列:PriorityQueue使用

package csdn.dreamzuora.queue;import org.junit.Test;import java.util.Comparator;
import java.util.PriorityQueue;/*** Title: 优先队列* Description:** @version 1.0* @author: weijie* @date: 2020/10/23 15:43*/
public class PriorityQueueTest {@Testpublic void example(){PriorityQueue<Integer> queue = new PriorityQueue<>(10);for (int i = 10; i > 0; i--){queue.add(i);}System.out.println(queue);System.out.println(queue.poll());}@Testpublic void compare(){PriorityQueue<Student> priorityQueue = new PriorityQueue<>(new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return Integer.compare(o2.getAge(), o1.getAge());}});for (int i = 0; i < 10; i++){Student student = new Student(i, "name-" + i);priorityQueue.add(student);}System.out.println(priorityQueue.peek());System.out.println("---------------------");for (int i = 20; i < 25; i++){priorityQueue.add(new Student(i, "name-" + i));}while (!priorityQueue.isEmpty()){System.out.println(priorityQueue.poll());}}class Student{Integer age;String name;public Student() {}public Student(Integer age, String name) {this.age = age;this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Student{" +"age=" + age +", name='" + name + '\'' +'}';}}
}

概念:先入后出

数组实现

java代码实现

package csdn.dreamzuora.stack;/*** @author weijie* @date 2020/10/15 16:02* Description: 先入后出*/
public class ArrayStack {int[] stack;int i = 0;/*** 初始化* @param size*/public ArrayStack(int size) {stack = new int[size];}/*** 入栈* @param data*/public boolean push(int data){if (i >= stack.length){return false;}stack[i++] = data;return true;}public boolean isEmpty(){if(i <= 0){return true;}return false;}/*** 出栈* @return*/public int pop(){return stack[--i];}}

单元测试

package csdn.dreamzuora.stack;import org.junit.Test;import static org.junit.Assert.*;/*** @author weijie* @date 2020/10/15 16:09* Description:*/
public class ArrayStackTest {ArrayStack stack = new ArrayStack(10);@Testpublic void print() {System.out.print("入栈:");for (int i = 0; i < 10; i++){stack.push(i);System.out.print("->" + i);}System.out.println();System.out.print("出栈:");while (!stack.isEmpty()){System.out.print("->" + stack.pop());}}
}

控制台打印

链表实现

java代码实现

package csdn.dreamzuora.stack;/*** @author weijie* @date 2020/10/15 16:19* Description:*/
public class Node {int value;Node next;public Node(int value) {this.value = value;}
}
package csdn.dreamzuora.stack;/*** @author weijie* @date 2020/10/15 16:18* Description:*/
public class LinkedListStack {private Node head;private int size = 0;public void push(Node node){if (size == 0){head = node;}else {node.next = head;head = node;}size ++;}public Node pop(){if (size != 0){Node node = head;head = head.next;size--;return node;}else {return null;}}public boolean isEmpty(){if (size <= 0){return true;}return false;}}

单元测试

package csdn.dreamzuora.stack;import org.junit.Test;import static org.junit.Assert.*;/*** @author weijie* @date 2020/10/15 16:31* Description:*/
public class LinkedListStackTest {LinkedListStack stack = new LinkedListStack();@Testpublic void print() {System.out.print("入栈:");for (int i = 0; i < 10; i++){stack.push(new Node(i));System.out.print("->" + i);}System.out.println();System.out.print("出栈:");while (!stack.isEmpty()){System.out.print("->" + stack.pop().value);}}
}

控制台打印

栈、队列 java代码实现相关推荐

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

    定义抽象节点类Node: 1 package cn.wzbrilliant.datastructure; 2 3 /** 4 * 节点 5 * @author ice 6 * 7 */ 8 publi ...

  2. 2021-9-下旬 数据结构-线性表-队列-java代码实现(复习用)

    话说...每次都用现成的类实现,是不是有点偷懒 //队列的本质也是线性表,特性为只在线性表首位端进行操作,为先进先出,和生活中排队的队列是一样的 //队列涉及到的操作主要是入队(enQueue)和出队 ...

  3. java栈代码执行_这段实现栈的java代码执行错误..

    每次执行到s.push(item)这里就错了..刚开始学java并不是很懂.. package test; import java.util.Scanner; public class FixedCa ...

  4. 《LeetCode力扣练习》剑指 Offer 09. 用两个栈实现队列 Java

    <LeetCode力扣练习>剑指 Offer 09. 用两个栈实现队列 Java 一.资源 题目: 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数 appendTail 和 de ...

  5. java 栈队列区别是什么意思_java栈和队列的区别

    Java中用LinkedList实现栈和队列_IT/计算机_专业资料.笔记摘录 栈和队列是两种特殊的线性表,它们的逻辑结构和线性表相同,只是其运算规则 较线性表有更多的限制,故...... 闽江学院电 ...

  6. 常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构)

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  7. java 一组数据中偏差较大的数据_深入分析数据结构中的队列(java代码实现)

    不知道你有没有过在餐厅打饭的经历,我们排的队其实就是我们今天所讲的主题,我们在排队的时候,在队列头部的人打好饭离开,新来的人排在队尾.这就是入队和出队的操作.所以,队列的特性就是先进先出.有了这个概念 ...

  8. Java实现min函数_AcWing 41. 包含min函数的栈--Java代码

    题目描述 blablabla 样例 blablabla 算法1 (辅助栈,同时压栈) $O(n)$ 分三种方法 1.(基础)x入栈,然后辅助栈的栈顶和x比较,x小,将x压入辅助栈,栈顶小,将栈顶压入 ...

  9. java 栈 队列 接口_Java队列接口

    java 栈 队列 接口 介绍: 队列是FIFO(先进先出)抽象数据类型(ADT). 换句话说,按插入顺序将元素删除. java.util.Queue是Java 中的接口,并且从java.util.C ...

最新文章

  1. Extensible Messaging and Presence Protocol (XMPP): Core
  2. dataTable() 与 DataTable() 的差别与处理方式
  3. C++ Primer 5th笔记(chap 16 模板和泛型编程)类模板特例化
  4. Codeforces Round 546 (Div. 2)
  5. HashMap 和 Hashtable 的同和不同
  6. vue 跨域:使用vue-cli 配置 proxyTable 实现跨域问题
  7. linux 启动rsyslog服务_我的服务器怎么老这么慢,难道说是被挖矿了?linux开机启动项自查...
  8. WCF 基础 契约 和 绑定
  9. CS224N刷题——Assignment3.1_A window into NER
  10. 离散数学--命题逻辑(一)
  11. EDA第一次课<1117电路图的绘制>
  12. linux光盘游戏,Linux下五个好玩的即时战略游戏
  13. 2018上半年爆款活动营销盘点
  14. LR之识别图片验证码
  15. Hexagon DSP SDK简介与HVX扩展(2)编译
  16. 打造前端瑞士军刀,为你开发路上披荆斩棘
  17. Unity3D博客及论坛合集
  18. leetcode剑指offer4
  19. 自助游最佳时间去最佳地方
  20. 使用layui框架的杰作(91uu.net)

热门文章

  1. Objective-C文件流操作
  2. 遍历对象属性_细说JS遍历对象属性的N种方法
  3. JAVA入门级教学之(赋值运算符)
  4. iptables 指定网卡_LINUX系统下的IPTABLES防火墙系统讲解(二)实战操作
  5. python代码自动生成器下载_Python代码生成器
  6. qsub 指定节点_PBS,QSUB常用命令
  7. Java开发学习必须了解的基础知识点
  8. linux用户组chownd,Linux系统centos6下用户与用户组权限命令用法 chmod与chown
  9. 卷组删除pv_如何安全的删除Linux LVM中的PV物理卷(硬盘或分区)
  10. python 实现显著性检测_强!汽车车道视频检测:python+OpenCV为主实现