ホームページ  >  記事  >  バックエンド開発  >  PHP標準ライブラリsplリンクリスト、スタック、キュー

PHP標準ライブラリsplリンクリスト、スタック、キュー

WBOY
WBOYオリジナル
2016-08-08 09:18:591330ブラウズ

二重リンクリストクラス: SplDoublyLinkedList

1. ノードの追加と削除のメソッド

push: リンクリストの最後にノードを挿入します
Pop: リンクされたリストの末尾ノードを取得し、リンクされたリストからこのノードを削除します。この操作では現在のポインターの位置は変更されません。 unshift: リンクされたリストの先頭にノードを挿入します
シフト: リンクリストの先頭ノードを削除します

2. ポインタ操作メソッド

巻き戻し: リンクリストの現在のポインタがリンクリストの先頭 (つまり、一番下) を指すようにします

current: リンク リストの現在のノード ポインターが指す要素を取得するには、呼び出す前に Rewind を呼び出す必要があります。ポイントされたノードが削除されると、空のノードをポイントします
next: リンクされたリストの現在のポインターが次のノードを指すようにし、それに応じて current の戻り値が変化します
下: リンクされたリストの先頭要素を取得します。現在のポインターの位置は変更されません
top: リンクされたリストの末尾要素を取得します。現在のポインターの位置は変更されません

3. その他のメソッド (使用法についてはスタック クラスを参照)

valid: リンクされたリストにまだ使用できるノードがあるかどうかを確認します。ループ出力時の判定

count: リンクされたリスト内のノードの数をカウントします
key: 現在のノードのキー値を返します
offsetSet: 指定されたキーの値を設定します。 注: キーが 0 の場合、0 はリンクされたリストの先頭または末尾を指し、スタック内のスタックの先頭を指します。
offfunset: 指定されたキーの値の登録を解除します

<code><span><?</span>php
<span>/**
 * Created by 马廷广
 * User: 马廷广
 * Date: 2015/8/5
 * Time: 10:52
 */</span><span>$obj</span><span>=</span><span>new</span> SplDoublyLinkedList();
<span>$obj</span><span>-></span>push(<span>'b'</span>);
<span>$obj</span><span>-></span>push(<span>'c'</span>);
<span>$obj</span><span>-></span>unshift(<span>'a'</span>);
var_dump(<span>$obj</span>);
<span>/*   array(3) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
    [2]=>
    string(1) "c"
  }
)
*/</span><span>$obj</span><span>-></span>rewind();
var_dump(<span>$obj</span><span>-></span>current());<span>//string(1) "a"</span><span>$obj</span><span>-></span>next();
var_dump(<span>$obj</span><span>-></span>current());<span>//string(1) "a"</span>
var_dump(<span>$obj</span><span>-></span>bottom());<span>//string(1) "a"</span>
var_dump(<span>$obj</span><span>-></span>top());<span>//string(1) "c"</span>
var_dump(<span>$obj</span><span>-></span>pop());<span>//string(1) "c"</span>
var_dump(<span>$obj</span>);
<span>/*
*  array(2) {
    [0]=>
    string(1) "a"
    [1]=>
    string(1) "b"
  }
*/</span>
var_dump(<span>$obj</span><span>-></span>shift());<span>//string(1) "a"</span>
var_dump(<span>$obj</span>);
<span>/*
* array(1) {
    [0]=>
    string(1) "b"
  }
*/</span></code>
スタッククラス: SplDoublyLinkedList クラスから継承された SplStack クラス

原則: スタッククラスの最下層はスタックによって実装されます。 スタックは先入れ後出しのデータです。 SplDoublyLinkedList クラスから継承されたメソッドには、spl が rewind メソッドを使用した後、図のスタックの先頭を指すなど、理解にいくつかの違いがあります。 Pop はスタックの最上位の要素を操作し、unshift と SHIFT はスタックの最下位の要素を操作します。 デキュー: キューを終了します

キュークラスのrewind、offsetSetなどのメソッドはリンクリストと同様です

<code><span><?</span>php
<span>/**
 * Created by 马廷广
 * User: 马廷广
 * Date: 2015/8/5
 * Time: 11:47
 */</span><span>$stack</span><span>=</span><span>new</span> SplStack();
<span>$stack</span><span>-></span>push(<span>'a'</span>);
<span>$stack</span><span>-></span>push(<span>'b'</span>);
<span>$stack</span><span>-></span>push(<span>'c'</span>);
echo <span>$stack</span><span>-></span>count();<span>//3</span><span>$stack</span><span>-></span>rewind();
echo <span>$stack</span><span>-></span>current();<span>//c</span><span>$stack</span><span>-></span>offsetSet(<span>0</span>,<span>'d'</span>);<span>//offsetSet中0指向的是图中的栈顶,由栈顶向下递增1,2,3,4</span><span>while</span>(<span>$stack</span><span>-></span>valid()){
    echo <span>$stack</span><span>-></span>key()<span>.</span><span>"->"</span><span>.</span><span>$stack</span><span>-></span>current();
    <span>$stack</span><span>-></span>next();
}
<span>/*2->d
1->b
0->a
*/</span></code>

著作権表示: この記事はブロガーによるオリジナル記事であり、ブロガーの許可なしに転載することはできません。


上記では、PHP 標準ライブラリ spl のリンクされたリスト、スタック、キューについて、その側面も含めて紹介しました。PHP チュートリアルに興味のある友人にとって役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。