java使用链表实现队列

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ljxbbss/article/details/78141632

队列使用Java进行链表实现,在网上找到了一张图,很好,借鉴一下


设置两个结点node,front指向队首元素,rear指向队尾;

上代码:



public class LinkedQueue {

    Node front;//队头指针,指向队头节点
    Node rail;//队尾指针,指向队尾节点

    int size = 0;//记录队列长度


    //构造函数
    public LinkedQueue() {
        front = rail = null;
    }

    public boolean isEmpty() {
        return size == 0 ? true : false;
    }

    //添加元素
    public boolean addQueue(Object ele) {
        if (size == 0) {
            front = new Node(null, ele);
            rail = front;
            size++;
            return true;
        }
        Node s = new Node(null, ele);
        //这块有个主意的地方,一旦rail设置了next属性,因为front节点与rail节点指向了同一个node节点,持有同一个结点的一个引用,因此front节点next属性也被填充
        rail.setNext(s);
        rail = s;
        size++;
        return true;
    }


    /**
     * 删除元素,出队列
     * @return
     */
    public boolean deleteQueue() {
        if (isEmpty()) {
            System.out.println("当前队列为空");
            return false;
        }

        front = front.next;
        size--;
        return true;

    }


    public static void main(String[] args) {
        LinkedQueue queue = new LinkedQueue();

        queue.addQueue(1);
        queue.addQueue(2);
        queue.addQueue(3);
        queue.deleteQueue();

    }


}

/**
 * 首先链表底层是一个个结点
 */
class Node {

    Node next;
    Object element;

    public Node(Node next, Object element) {
        this.next = next;
        this.element = element;
    }

    public Node getNext() {
        return next;
    }

    public void setNext(Node next) {
        this.next = next;
    }

    public Object getElement() {
        return element;
    }

    public void setElement(Object element) {
        this.element = element;
    }

}

代码很少,但是思考却花了不少时间,记录我的学习历程

猜你喜欢

转载自blog.csdn.net/ljxbbss/article/details/78141632