首页 > 其他分享 >LinkedList集合应用:实现队列

LinkedList集合应用:实现队列

时间:2023-03-02 14:45:27浏览次数:53  
标签:LinkedList 队列 list NoSuchElementException queue 集合 public

LinkedList集合应用:实现队列

题目:

使用LinkedList类实现一个Queue(队列)类。Queue类应该具有以下功能:

  • void enqueue(E element):将给定的元素添加到队列的末尾。

  • E dequeue():删除并返回队列的第一个元素。如果队列为空,则抛出NoSuchElementException异常。

  • E peek():返回队列的第一个元素。如果队列为空,则抛出NoSuchElementException异常。

  • int size():返回队列中的元素数量。

  • boolean isEmpty():如果队列为空,则返回true,否则返回false。

 

class Queue<E> {
    // 使用LinkedList实现队列
    private LinkedList<E> list;



    public Queue() {
        // 初始化队列
        list = new LinkedList<>();
    }

    public void enqueue(E element) {
        // 将给定的元素添加到队列的末尾
        list.addLast(element);
    }

    public E dequeue() {
        // 删除并返回队列的第一个元素
        // 如果队列为空,则抛出NoSuchElementException异常

        if (list.isEmpty()) {
            throw new NoSuchElementException();
        }else {
            return list.remove(0);
        }
    }

    public E peek() {
        // 返回队列的第一个元素
        // 如果队列为空,则抛出NoSuchElementException异常
        if (list.isEmpty()) {
            throw new NoSuchElementException();
        }else {
            return list.getFirst();
        }
    }

    public int size() {
        // 返回队列中的元素数量
        return list.size();

    }

    public boolean isEmpty() {
        // 如果队列为空,则返回true,否则返回false
        if (list.size()==0) {
            return  true;
        }else {
            return false;
        }
    }
}

添加测试类:

public class Task {

    public static void main(String[] args) {
        Queue<Integer> queue = new Queue<>();
        // 加入队列
        queue.enqueue(1);
        queue.enqueue(2);
        queue.enqueue(3);

        // 出队
        System.out.println(queue.dequeue());
        // 查看队首元素
        System.out.println(queue.peek());
        // 查看队列大小
        System.out.println(queue.size());

        System.out.println(queue.isEmpty());
    }
}

 

标签:LinkedList,队列,list,NoSuchElementException,queue,集合,public
From: https://www.cnblogs.com/yaomagician/p/17171717.html

相关文章

  • 队列
    队列是一个有序列表,可以用数组或则链表实现遵循先入先出原则,即:先存入的数据先取出示意图:(使用数组模拟队列示意图) 队列的注意事项: 数组模拟队列的不足之处:目前数......
  • 离散数学集合定理、命题等价、推理定律
    集合运算定理等价命题公式等价谓词公式等价......
  • java LinkedList 源码
    概述底层数据结构是双向链表(jdk1.6是双向循环,1.7开始不循环了),所以新增/删除效率高,查询/修改效率相对较低全能冠军:既是一个顺序容器,也是队列,还可以作为栈使用未实现Ran......
  • DataTable转泛型集合
    usingSystem;usingSystem.Collections.Generic;usingSystem.Data;usingSystem.Reflection;namespaceBT.Preservation.Models{publicstaticclassExtend......
  • C语言循环队列实现
    typedefstruct{int*arr;intfront;inttail;intsize;}MyCircularQueue;MyCircularQueue*myCircularQueueCreate(intk){MyCircularQ......
  • 《消息队列高手课》笔记(1)
    第一课:01|为什么需要消息队列?总结一、哪些问题适合使用消息队列来解决?1.异步处理可以更快地返回结果;减少等待,自然实现了步骤之间的并发,提升系统总体的性能......
  • PHP基于Redis实现延迟队列
    PHP基于Redis实现延迟队列标签(空格分隔):php,redis,linux解决思路1.基于Redis过期key事件2.基于RedisZset特征处理Redis-ZsetZset首先它是一个set,这保证了内部......
  • Map集合
    Map集合packageMap_test.Map_01;importjava.util.HashMap;importjava.util.Map;publicclassMapDemo_1{publicstaticvoidmain(String[]args){......
  • 得分最高的单词集合
    题目你将会得到一份单词表words,一个字母表letters(可能会有重复字母),以及每个字母对应的得分情况表score。请你帮忙计算玩家在单词拼写游戏中所能获得的「最高得分」:能......
  • 01 集合
    #1、作用#1.1关系运算#friends1=["zero","kevin","jason","egon"]#friends2=["Jy","ricky","jason","egon"]##l=[]#forxinfriends1:#ifxinfriends2:......