重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
输出受限的双端队列,即删除限制在一端进行,而插入仍允许在两端进行.
站在用户的角度思考问题,与客户深入沟通,找到润州网站设计与润州网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站制作、企业官网、英文网站、手机端网站、网站推广、空间域名、网页空间、企业邮箱。业务覆盖润州地区。
输入受限的双端队列,即插入限制在一端进行,而删除仍允许在两端进行.
理解了概念之后看看题目,应该比较容易理解了:
第一题:
由于队列输出受限,故只能在一端进行输出:
分析答案A:A的输入序列为abcd,输出结果为dacb ,由输出受限性质可知da开头的结果只有dabc; A项为错误答案;
分析答案B:B的输出结果为:cadb ;其输入输出顺序为(可以画图帮助理解): 先输入a,然后在非输出端输入b,这时队列的序列为ba(假设左端为限制端,下同),接着在输入端输入c,这时队列的序列为bac,输出c,再输出a,在输出端输入d,这时队列的序列为bd,输出d,输出b;得到输出序列为cadb;
分析答案D:先输入a,接着在输出端输入b,然后再另一端输入c,最后在输出端输入d,这时队列的序列为cabd;其输出结果为dbac;
分析答案C:由db开头的输出结果只有dbac;故错误;
不建议直接用php来做队列,php的array操作虽然勉强能做伪队列,但问题也来了,如果是大量的数据呢?php会不会内存问题直接挂了?
建议:测试的话用用还凑合,但真正去用的话双向队列,用redis的list类型吧,可以满足你的需求,同时数量级上也不是问题,单向队列
httpsqs,rabbitmq等
再看看别人怎么说的。
数组就是典型的数据结构了,使用数组操作函数,就可以实现单向和多向队列了。 操作函数有: array_shift array_unshift array_push array_pop
?php
class Deque{
private $queue = array();
public function addFirst($item){
return array_unshift($this-queue, $item);
}
public function addLast($item){
return array_push($this-queue, $item);
}
public function removeFirst(){
return array_shift($this-queue);
}
public function removeLast(){
return array_pop($this-queue);
}
}