二つの基本的なデータ構造の正面に導入-
アレイ
及び
リスト
、論理的な観点から、それらは両方とも線形構造である(構造は、線図のように2つだけの長手方向、非線形構造を含む木を、配置されており、長所と短所を持って、配列ストレージは、チェーン店である、ビューのストレージ点から、)後述する、連続したメモリアレイが事前に適用する必要があり、それは制限がオーバーフローする超えるが、小さなデータセットの正確サイズを知ります、また読みする方が便利ですが、インサートと悪化するパフォーマンスを削除する配列は、配列のより効率的に、ランダムアクセス特性になります使用して、リストはそこにはスペースの制約はありませんが、、ポインタを格納挿入し、高効率を削除するには、追加のスペースが必要になりますが、サポートされていない場合ランダムアクセス。PHPはほとんどこれらと接触していないが、あなたはC言語を使用することを学ぶが、これらの言葉は、まだ基礎を知っている必要があります。
スタックとキュー:次は二つの特別な線形構造、線形構造を導入したり、特定のシーンのニーズを満たすためにしたいです。
まず、スタックを見て:
スタックスタックと呼ばれ、これは一端でのみ線形テーブル挿入および欠失を定義し、アウト進め、第一アウトの最後(LIFO)の特性を満たすこと。通常、他の端がスタックの最下部と呼ばれると呼ばれる、スタックが空のスタックと呼ばれる任意のデータが含まれていない、スタックの一端の挿入や削除を許可します:
スタックは、配列/リストによって達成順次積み重ねながら、多くの場合、配列によって呼び出され、リンクリストによって実装リンクスタックと呼ばれるサポートしています。
それはPHPで実証されているので、私は物事をシンプルにするために、PHP言語に傾向があるしようと、我々は、単にPHPの配列経由の単純なシーケンスを実現する方法を次のスタックの下に示します。
/ * * *シンプル順次スタックはPHP配列によって達成される * / クラスSimpleStack { プライベート _stack $ = [] プライベート の$ _size = 0 パブリック 関数 __construct($サイズ = 10 ) { $この - > _サイズ= $サイズ; } // 先頭の要素を取得 、公開 機能のPOPを() { // 空のスタック IF(COUNT($この - > _スタック)== 0 ){ 返す falseに; } 戻り array_pop($この - > _stack); } // スタックの一番上に要素をプッシュ パブリック 関数プッシュ($値) { // フルスタック IF(COUNT($この - > _スタック)== $この - > _size){ リターン falseに; } array_push($この - > _スタック、$値); 戻り値 をtrueに; } 公共 機能のisEmpty() { // スタックが空の場合 戻る 現在の($この == - > _スタック)はfalse ; } パブリック 関数サイズ() { 戻り カウント($この - > _size)。 } } $スタック = 新しい SimpleStack(15 )。 var_dump($スタック - >のisEmpty()); #真 $スタック - >プッシュ(111 ); $スタック - >プッシュ( '长坂坡' ); var_dump($スタック - >ポップ()); #长坂坡 のvar_dump($スタック- >サイズ()); #1
SPL PHPライブラリーの一番下には、スタックの概念を使用すると、画像スタック操作過程を理解するためにチャートの下に与えられ、理解することは複雑ではない、比較的単純で、実装クラスSplStackスタックを提供します。
、そのような今後当社ブラウザ、後方機能などのエディタ/ IDEの取り消し、キャンセルアンドゥ機能、再帰と呼ばれるプログラムコードの機能、4つの事業として、広く使用され、日々の開発およびソフトウェアの使用にスタックこれは、達成するために、スタックデータ構造に基づいており、さらには有名なstackoverflowのサイトにも助言を求めるために必要性を意味する「スタックオーバーフロー」を取っています。