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 は独自の両端リンク リスト構造を実装しています。
•ダブルエンドリンクリストには 2 つの主な機能があります: ◦ Redis リストタイプの基礎となる実装の 1 つとして
• 他の機能モジュールによって使用される一般的なデータ構造として
• ダブルエンドリンクリストのパフォーマンス特性終了リンク リストとそのノードは次のとおりです。 ◦ ノードには先行ポインタと後続ポインタがあり、先行ノードと後続ノードにアクセスする複雑さは O(1) で、リンク リストの反復は双方向で実行できます。先頭から末尾まで、そして末尾から先頭まで。
◦ リンクされたリストにはテーブルの先頭と末尾へのポインターがあるため、先頭と末尾の処理の複雑さは O(1) です。ノード数を記録する属性があるため、O(1) で処理できます。次数内のリンク リストで返されるノード数 (長さ)。