zoukankan      html  css  js  c++  java
  • 队列

    定义

    • 队列是一种基于先进先出(FIFO)的集合类型

    Java


    • 源码
    import java.util.Iterator;
    
    public class Queue<Item> implements Iterable<Item> {
        private Node first;// 指向最早添加的结点的链接
        private Node last;// 指向最近添加的结点的链接
        private int N;// 队列中的元素数量
    
        public boolean isEmpty() {
            return null == first;// 或:0 == N
        }
    
        public int size() {
            return N;
        }
    
        // 向表尾添加元素
        public void enqueue(Item item) {
            Node oldlast = last;
            last = new Node();
            last.item = item;
            last.next = null;
            if (isEmpty()) first = last;
            else oldlast.next = last;
            N++;
        }
    
        // 从表头删除元素
        public Item dequeue() {
            Item item = first.item;
            first = first.next;
            if (isEmpty()) last = null;
            N--;
            return item;
        }
    
        public Iterator<Item> iterator() {
            return new ListIterator();
        }
    
        private class Node {
            // 定义了结点的嵌套类
            Item item;
            Node next;
        }
    
        private class ListIterator implements Iterator<Item> {
            private Node current = first;
    
            public boolean hasNext() {
                return null != current;
            }
    
            public void remove() {
            }
    
            public Item next() {
                Item item = current.item;
                current = current.next;
                return item;
            }
        }
    }
    
    • 测试用例
    public class Test {
        public static void main(String[] args) {
    
            String[] ss = {"to", "be", "or", "not", "to", "-", "be", "-", "-", "that", "-", "-", "-", "is"};
            Queue<String> q = new Queue<String>();
            for (String s : ss) {
                if (!s.equals("-")) {
                    q.enqueue(s);
                } else {
                    System.out.print(q.dequeue() + " ");
                }
            }
            System.out.println("(" + q.size() + " left on queue)");
        }
    }
    
    • 结果
    to be or not to be (2 left on queue)
    
  • 相关阅读:
    tcp/ip协议
    linux系统优化项
    MySQL索引
    mysql命令中的group by 和 order by li'mit使用与技巧
    mysql命令
    WPF学习笔记01_XAML之简介
    【高精度】大整数的因子
    【高精度】计算2的N次方
    【高精度】大整数减法
    【高精度】大整数加法
  • 原文地址:https://www.cnblogs.com/freelancy/p/8024542.html
Copyright © 2011-2022 走看看