Java用链表实现队列

/**
 * 链表实现队列
 */
public class LinkedQueue {
    class Node{
        int val;
        Node next;
        public Node(int val){this.val=val;}
        public Node(int val,Node next){this.val=val;this.next=next;}
    }

    // 队头指针
    Node front;
    // 队尾指针
    Node rear;
    // 队列长度
    int queueSize;
    public LinkedQueue(){}

    /**
     * 入队,如果队列为空,则将头尾指针都指向这个元素,否则将队尾元素的next域设为新入队元素,再将尾指针指向新入队元素
     * @param element
     * @return
     */
    public boolean enQueue(int element){
        if(isEmpty()){
            front=new Node(element,null);
            rear=front;
            queueSize++;
            return true;
        }
        Node node = new Node(element,null);
        rear.next=node;
        rear=node;
        queueSize++;
        return true;
    }

    /**
     * 出队,头指针指向它的next域,如果队列中只有一个元素,那么将尾指针也只想next域,也就是null
     * @return
     */
    public int deQueue(){
        if(isEmpty()){
            throw new RuntimeException("队列已经空了!");
        }
        int element=front.val;
        front=front.next;
        if(queueSize==1){
            rear=front;
        }
        queueSize--;
        return element;
    }

    public boolean isEmpty(){
        return front==null && front==rear && queueSize==0;
    }

}

你可能感兴趣的:(数据结构,java,数据结构,队列,链表)