京东6.18大促主会场领京享红包更优惠

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7144|回复: 0

javascript实现双端队列

[复制链接]

24

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2021-11-12 08:29:32 | 显示全部楼层 |阅读模式 来自 中国
本文实例为大家分享了javascript实现双端队列的具体代码,供大家参考,具体内容如下( _" f- q( [0 J3 O4 q8 U6 A9 k
1.双端队列, G' ?: w; O0 Q1 h  r
& q; ~8 L. H% n( ~2 r

& }0 u( X2 T6 v8 k$ H) ^双端队列是一种允许我们同时从前端和后端添加和移除元素的特殊队列! o$ q, X% n3 X
2.双端队列的应用
* O& J/ ]5 ~# ?7 e" a
" V0 T& s( }; w3 @1 V+ |* ]

- }4 q) @5 h- [8 I一个刚买了票的入如果只是还需要再问一些简单的信息,就可以直接回到队伍头部,另外队伍末尾的人如果赶时间也可以直接离开队伍
0 a8 G" d; |6 Q5 |: \# m3.双端队列的方法# a0 D1 k9 ^) ^9 A0 v  O- h: m

" ?: g$ t( w4 J" `! |) j& @: m. F6 X' Y
addFront(element):该方法在双端队列前端添加新的元素
, C- e( O( T, Y* I! f( TaddBack(element):该方法在双端队列后端添加新的元素(实现方法和 Queue 类中的enqueue 方法相同)。& E. U) u4 V) R
removeFront():该方法会从双端队列前端移除第一个元素: q7 n% e+ e/ r, x6 n5 A1 }
removeBack():该方法会从双端队列的后端移除第一个元素0 i: T# C- W; q5 ^: Y9 g
peekFront():该方法返回双端队列的第一个元素。
7 e, M0 T& N6 q" u1 l7 CpeekBack()):该方法返回双端队列后端的第一个元素。4 w( ~3 g9 C+ ]9 W  Q5 M2 B7 [" B; R
4.实现
2 k" D# |+ M" v% a  w. w) c( o' I- ^# A! |! N1 v: k
[code]class Deque{           constructor(){               this.items = {};               this.count = 0;               this.lowestCount = 0;            }        // 在双端队列前端添加新元素        addFront(element){            if(this.isEmpty()){                this.addBack(element);            }            else if(this.lowestCount > 0){                this.lowestCount -- ;                this.items[this.lowestCount] = element;            }            else{                for(let i=this.count;i>0;i--){                    this.items = this.items[i-1];                 }                this.lowestCount = 0;                this.items[this.lowestCount] = element;                this.count++;            }        };        addBack(element){            this.count++;            this.items[this.count-1] = element;        };        removeFront(){            if(this.isEmpty()){                return undefined;            }            const result = this.items[this.lowestCount];            delete this.items[this.lowestCount];            this.lowestCount++;            return result;        };        removeBack(){            if(this.isEmpty()){                return undefined;            }            const result = this.items[this.count-1];            delete this.items[this.count-1];            this.count--;            return result;        };        peekFront(){            if(this.isEmpty()){                return null;            }          return   this.items[this.lowestCount];        };        peekBack(){            if(this.isEmpty()){                return null;            }            return this.items[this.count-1];        };        isEmpty(){            return this.count - this.lowestCount == 0;        }        size(){            return  this.count - this.lowestCount;        }        toString(){            if(this.isEmpty()){                return '';            }            let objString = `${this.items[this.lowestCount]}`;            for(var i=this.lowestCount+1;i

帖子地址: 

梦想之都-俊月星空 优酷自频道欢迎您 http://i.youku.com/zhaojun917
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|梦想之都-俊月星空 ( 粤ICP备18056059号 )|网站地图

GMT+8, 2025-11-10 12:07 , Processed in 0.040455 second(s), 21 queries .

Powered by Mxzdjyxk! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表