实现双向队列


class deque{
public $queue = array();
public $length = 0;

public function rpop(){
$node = array_pop($this->queue);
$this->countque();
return $node;
}

public function rpush($node){
array_push($this->queue, $node);
$this->countque();
return $this->queue;
}

public function lpop(){
$node = array_shift($this->queue);
$this->countque();
return $node;
}

public function lpush($node){
array_unshift($this->queue, $node);
$this->countque();
return $this->queue;
}

private function countque(){
$this->length = count($this->queue);
}

}



•Redis 实现了自己的双端链表结构。
•双端链表主要有两个作用: ◦作为 Redis 列表类型的底层实现之一;
◦作为通用数据结构,被其他功能模块所使用;

•双端链表及其节点的性能特性如下: ◦节点带有前驱和后继指针,访问前驱节点和后继节点的复杂度为 O(1) ,并且对链表的迭代可以在从表头到表尾和从表尾到表头两个方向进行;
◦链表带有指向表头和表尾的指针,因此对表头和表尾进行处理的复杂度为 O(1) ;
◦链表带有记录节点数量的属性,所以可以在 O(1) 复杂度内返回链表的节点数量(长度);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值