• 用LinkedList模拟队列(Java容器)


    队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。队列具有先进先出(FIFO)的特点,也就是在执行删除操作时先删除最早插入的成员。学过数据结构的同学应该对队列这个数据结构的性质相当熟悉了,下面的代码利用LinkedList模拟队列这种数据结构。

    代码如下:

    package Stephen.Classchapter9;
    
    import java.util.LinkedList;
    //用LinkedList模拟
    public class MockQueue {
        public LinkedList list = new LinkedList();
        //将指定的元素插入队尾
        public void offer(Object v){
            list.offer(v);
        }
        //检索,但是不移除队列的头,如果此队列为空,则返回null
        public Object peek(){
            return list.peek();
        }
        //检索,但是不移除此队列的头
        //此方法与peek方法的唯一不同是,如果此队列为空,他会抛出一个异常
        public Object element(){
            return list.element();
        }
        //检索并移除此队列的头,如果队列为空,则返回null
        public Object poll(){
            return list.poll();
        }
        //检索并移除此队列的头,此方法与poll方法的不同在于,如果此队列为空,他会抛出一个异常
        public Object remove(){
            return list.remove();
        }
        //队列是否为空
        public boolean isEmpty(){
            return list.isEmpty();
        }
        //打印队列元素
        public String toString(){
            return list.toString();
        }
        public static void main(String[] args){
            MockQueue queue = new MockQueue();
            //下面的语句使用类LinkedList实现的堆栈的用法
            queue.offer("Shandong");
            queue.offer("University Of Technology");
            queue.offer("StephenLi");
            while (!queue.isEmpty()){
                System.out.println("将要队尾移除的成员是" + queue.peek());
                queue.poll();
                System.out.println("当前中剩余成员为 :"  + queue);
            }
        }
    }

    运行结果如下:

    这段程序中类MockQueue用于模拟队列,其offer方法可以实现将对象插入到队列的队尾,而peek和element方法用于查看队列头部的成员,poll和remove方法则是从队首移除成员,main方法中新建了一个Mockqueue对象,并按顺序插入三个字符串,然后循环地将成员从队尾移除,从程序打印结果可以开去,最早插入的是Shandong最先被移除,最迟插入的StephLi最后被移除,类MockQueue完成符合队列数据结构的定义。

    程序中用到的LinkedList的方法如下:

    public Object poll()

    参数:无

    功能:找到并移除此列表的头(第一个元素)

    public Object remove()

    参数:无

    功能:找到并移除此列表的头(第一个元素)

    public boolean offer(Object 0)

    参数:0 为待插入的对象

    功能:将指定的元素添加到此表的末尾(最后一个元素);

    public Object peek()

    参数:无

    功能:找到但不移除此表的头(第一个元素),如果此队列为空,则返回null

    public Object element()

    参数:无

    功能:找到但不移除此表的头(第一个元素),如果此队列为空,则抛出NoSuchElementException 异常

    public boolean isEmpty()

    参数:无

    功能:如果此collection不包含元素,则返回true,否则返回false;

  • 相关阅读:
    Go 场景
    sourcetree clone 提示url无效
    简单去重比较/复杂数据去重处理
    vue组件之间的通信
    js-执行机制之同步、异步、宏任务、微任务
    react生命周期
    git push被忽略的文件 处理
    请求头的属性
    运算精度问题https://blog.csdn.net/smile_ping/article/details/80284969
    react中状态提升
  • 原文地址:https://www.cnblogs.com/lidaojian/p/2566489.html
Copyright © 2020-2023  润新知