队列的入门和实现

目录

1.队列的入门

2.队列的实现


1、队列的入门

       队列是一种列表,不同的是队列只能在队尾插入元素,在队首删除元素。队列用于存储按顺序排列的数据,先进先出,这点和栈不一样,在栈中,最后入栈的元素反而被优先处理。可以将队列想象成在银行前排队的人群,排在最前面的人第一个办理业务,新来的人只能在后面排队,直到轮到他们为止。队列是一种先进先出(First-In-First-Out,FIFO)的数据结构。队列被用在很多地方,比如提交操作系统执行的一系列进程、打印任务池等,一些仿真系统用队列来模拟银行或杂货店里排队的顾客。

       队列的两种主要操作是:向队列中插入新元素和删除队列中的元素。插入操作也叫做入队,删除操作也叫做出队。入队操作在队尾插入新元素,出队操作删除队头的元素。队列的另外一项重要操作是读取队头的元素。这个操作叫做peek()。该操作返回队头元素,但不把它从队列中删除。除了读取队头元素,我们还想知道队列中存储了多少元素,可以使用length属性满足该需求;要想清空队列中的所有元素,可以使用clear() 方法来实现。

 

2、队列的实现

(1)实现Queue类

function Queue() {
            this.dataStore = [];
            this.enqueue = enqueue;
            this.dequeue = dequeue;
            this.front = front;
            this.back = back;
            this.toString = toString;
            this.empty = empty;
        }

(2)队列方法实现

function Queue(){
            this.dataStore = [];
            //进队列,从尾部添加数据
            this.enqueue=function (element) {
                this.dataStore.push(element);
            }
            //从队列头部删除数据,并且获得这个数据
            this.dequeue=function () {
                return this.dataStore.shift();
            }
            //获得队列最前面的数据
            this.front=function(){
                return this.dataStore[0];
            }
            //获得队列最后面的数据
            this.back=function () {
                return this.dataStore[this.dataStore.length-1];
            }
            //依次返回当前队列的数据
            this.toString=function () {
                return this.dataStore.toString();
            }
            //判断当前队列是否为空
            this.empty=function () {
                if(this.dataStore.length==0){
                    return true;
                }
                else{
                    return false;
                }
            }
            //遍历当前队列的数据
            this.forEach=function (call) {
                var length = this.dataStore.length;
                for(var i=0;i<length;i++){
                    call(this.dataStore[i],i);
                }
            }
        }

(3)队列的测试

var q = new Queue();
        q.enqueue("小明");
        q.enqueue("小刚");
        q.enqueue("小花");
        console.log(q.dequeue());

        console.log(q.toString());

        console.log(q.front());

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值