数据结构(3)队列

一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列是按照“先进先出”或“后进后出”的原则组织数据的。队列中没有元素时,称为空队列。

与栈相似,但有不同,栈遵循的是先进后出,也就是最先放入栈的节点会最后被弹出,而队列则是先进先出,第一个放入的节点最先被弹出,最后放入的节点最后被弹出。


队列结构

在往栈里放入节点时,先是将头指针和尾指针都指向第一个节点,随后尾指针不变,头指针一直指向新加入的节点,也就是一点有新的节点进入栈,位置不变,头指针一直在变化。而队列则是头指针不变化,尾指针一直指向新插入的节点。还有一点不同就是在栈中一直都是新插入的节点指向旧节点,而队列一直是旧节点指向新节点。

用js编写一个队列:

先创建一个代表节点的类:

function Node(value){

    this.value  = value;

    this.point = null;  //会在插入队列的时候进行复制 指向下一个要插入的节点

}

function Stack(){

    this.head = null; //头指针

    this.tail = null;//尾指针

    this.push = function(value){

        let node = new Node(value);

        if(this.tail!=null){

            this.tail.point = node;

            this.tail = node; 

        }else{

            this.head = node;

            this.tail = node;

        }

    }

    this.pop = function(){

        let node = null;

        if(this.head!= null){

            node = this.head;

            this.head = node.point;

        }

    }

}

你可能感兴趣的:(数据结构(3)队列)