必威体育Betway必威体育官网
当前位置:首页 > IT技术

Java实现队列

时间:2019-08-04 13:41:07来源:IT技术作者:seo实验室小编阅读:87次「手机版」
 

java队列

    • 队列定义
    • 队列操作
    • 链式队列实现
      • 创建节点
      • 创建队列
      • 入队操作
      • 出队操作
      • 清空队列
      • 测试
      • 输出

队列定义

队列:队列是只允许在一端进行插入操作,而在另一端进行删除操作.

队列是一种先进先出(FIFO)的线性表,允许插入的一端称为队尾,允许删除的一端称为队头.

队列操作

入队:向队尾添加元素;

出队:获取并移除队头元素;

这里写图片描述

链式队列实现

创建节点

data:节点数据

next:指向下一个节点

class Node{     
    public integer data;
    public Node next;
    public Node(Integer data) {
        super();
        this.data = data;
    }
}

创建队列

class queue{    
 //头节点
    private Node front;
    //尾节点
    private Node rear;
    //数据量
    private Integer size = 0;
}

入队操作

    public void enQueue(Integer data) {
        Node n = new Node(data);

        if(front == null) {
            front = n;
            rear = front;
        }
        else {
            rear.next = n;
            //非循环队列
            rear = n;

            //循环队列
            //rear.next = front
        }
        size++;
    }

出队操作

    public Integer deQueue(){

        if(front == null) {
            return front.data;
        }
        else {
            Integer data = front.data;
            Node fNode = front;
            front = fNode.next;
            //将头节点指向null,等待垃圾回收器回收
            fNode = null;
            size--;
            return data;
        }

    }

清空队列

    public void clean() {
        Node fNode  = front;
        while(fNode != null) {
            front = fNode.next;
            fNode = null;
            fNode = front;
            size--;
        }
        rear = null;
    }
    public String toString() {
        String str = "The Queue data is : ";
        Node fNode  = front;
        while(fNode != null) {
            str += fNode.data + "  ";
            fNode  = fNode.next;
        }
        str += "\t" + "the size is :" + size;
        return str;
    }
}

测试

public static void main(String[] args) {
        // TODO Auto-generated method stub
        Queue queue = new Queue();

        System.out.println("队列插入操作");
        queue.enQueue(20);
        queue.enQueue(15);
        queue.enQueue(10);
        queue.enQueue(5);

        System.out.println(queue.toString());
        System.out.println("队列获取元素");
        Integer data = queue.deQueue();
        System.out.println("获取的元素为:" + data);
        System.out.println(queue.toString());

        System.out.println("队列清空元素");
        queue.clean();
        System.out.println(queue.toString());

    }

输出

队列插入操作
The Queue data is : 20  15  10  5   the size is :4
队列获取元素
获取的元素为:20
The Queue data is : 15  10  5   the size is :3
队列清空元素
The Queue data is :     the size is :0

相关阅读

一个用消息队列 的人,不知道为啥用 MQ,这就有点尴尬

消息队列为什么写这篇文章?博主有两位朋友分别是小A和小B:小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产

队列的基本操作(顺序队列、循环队列、链式队列)

队列也是一种线性表,是一种先进先出的线性结构。队列只允许在表的一端进行插入(入队)、删除(出队)操作。允许插入的一端称为队尾,允

SWUSTOJ #965 循环队列

SWUSTOJ #965 循环队列题目输入输出样例输入样例输出源代码题目 根据给定的空间构造顺序循环队列,规定队满处理方法为少用一个元素

优先队列

#include <bits/stdc++.h> using namespace std; const int maxn=10001; int main() { priority_queue<int>p; p.push(3)

thinkphp-queue自带的队列包使用分析

前言当前笔记中的内容针对的是 thinkphp-queue 的 v1.1.2 版本,现在官方已经更新到了 v1.1.3 版本, 下文中提到的几个Bug在最新的ma

分享到:

栏目导航

推荐阅读

热门阅读