美文网首页
用链表实现一个队列

用链表实现一个队列

作者: xin激流勇进 | 来源:发表于2019-04-05 15:49 被阅读0次
    package structures;
    
    public class LinkedListQueue<E> implements Queue<E> {
    
        private class Node {
            public E e;
            public Node next;
    
            public Node(E e, Node next) {
                this.e = e;
                this.next = next;
            }
    
            public Node(E e) {
                this(e, null);
            }
    
            public Node() {
                this(null, null);
            }
        }
    
        private Node head, tail;
        private int size;
    
        public LinkedListQueue() {
            head = null;
            tail = null;
            size = 0;
        }
    
        @Override
        public int getSize() {
            return size;
        }
    
        @Override
        public E getFront() {
            if (isEmpty()) {
                throw new IllegalArgumentException("queue is empty!");
            }
            return head.e;
        }
    
        @Override
        public boolean isEmpty() {
            return size == 0;
        }
    
        @Override
        public void enqueue(E e) {
            if (tail == null) {
                tail = new Node(e);
                head = tail;
            } else {
                tail.next = new Node(e);
                tail = tail.next;
            }
    
            size ++;
        }
    
        @Override
        public E dequeue() {
            if (isEmpty()) {
                throw new IllegalArgumentException("queue is empty!");
            }
    
            Node retNode = head;
            head = head.next;
            retNode.next = null;
            if (head == null) {
                tail = null;
            }
            size --;
    
            return retNode.e;
    
        }
    
        @Override
        public String toString() {
            StringBuilder stringBuilder = new StringBuilder();
            stringBuilder.append("LinkedListQueue: front ");
    
            Node cur = head;
            while (cur != null) {
                stringBuilder.append(cur.e + "->");
                cur = cur.next;
            }
    
            stringBuilder.append(" Null tail");
    
            return stringBuilder.toString();
        }
    }
    
    

    相关文章

      网友评论

          本文标题:用链表实现一个队列

          本文链接:https://www.haomeiwen.com/subject/lnxkiqtx.html