PHPの例を達成するために、テーブルの要素の注文フォームと注文を追加および削除

テーブル、追加、削除要素の順序の操作。

要素を追加します。

リチウム[1328,693,2529,254】要素11のリストを追加するために以下に示すように、3つの方法があります。

 

 

A)要素の末尾、O(1)の時間計算を挿入する;ことを元の順序のリストの順序を保証するため。

B)非順序保存添加元素(一般的ではないが)、O(1)の時間計算量;元の順序のリストの順序を混乱させる。

挿入素子用C)保護、O(N)の時間計算量;元の順序のリストの順序を保証します。

要素を削除します

リチウム[1328,693,2529,254]削除要素の下に示された配列のリスト、3つの方法があります。

 

 

a)は、最後の要素のテーブルの削除、O(1)の時間計算量は、

B)非順序保存要素の除去、O(1)の時間複雑。

C)素子アイソトンは、O(N)の時間計算量を削除し、例えば、図の要素1を削除しました。

 

リスト、データを記憶するものとして、データ要素の種類を許可する:として、李[121「ハロー」、3.14、1000]、したがって、リストの要素の外部方法が行います。

外部要素の方法:リストで、理解できるように、アドレスは、各要素に格納され、各要素は、外部の外部リスト、外部要素の各要素に対応するアドレスです。図は次のとおりです。

 呼ばれるサポートの拡張シーケンステーブル記憶領域の動的シーケンステーブル

PHPコードテーブル動的配列:

  1 <?PHP 
  2 / ** 
  3つのシーケンス*クラス。
  4 * DESC:シーケンシャルテーブルを実装する:
  5 *配列表を:メモリ要素に順次格納され、ヘッダ要素及び尾部要素に加えて、他の要素が11コンパクトに接続されています。 ;一般的に一次元配列で表さ。
  機能が6 *:外部要素は、配列表、配列表専用メモリ素子アドレスであり、表中の配列要素タイプのデータ要素の複数種類であってもよい
  getElem要素の位置取得* 7 
  * 8 getListLen取得シーケンステーブルの長さを
  9 * getPriorElemは、前の要素によって得られた
 素子得た後10 * getNextElem 
 、要素ELEM挿入インデックス位置11 * InsertListを新しいシーケンステーブル返す
 インデックス位置12 * DeleteList削除ELEMを、新たなシーケンステーブルを返す
 13 * / 
 14 
 15クラスシーケンス
 16 { 
 17 $のseqArr公開。 18は公衆$長である;  19 __constructパブリック関数($ ARR )2021の$ this -である{> $ seqArr = ARR ; 22であるの$ this - > COUNT =長さ($ ARR ); 23である} 24 25 //パブリック要素26の表のリスト機能getElemに所定の順序である($インデックス取得)27 {28 IFを(インデックス$ <$インデックス== 0 || 0 ||インデックス$>の$ this - > 長さ)29 {30リターン"エラー!" ; 31である} 32リターンの$ this - > seqArr [$インデックス]; 33である}図34は、35であります//配列表リストパブリック関数の長さgetListLen 36($ ARR取得[)37 {リターン38の$ this - >は、39長さ($ ELEM 40 // 41は、テーブルリストパブリック関数getLocateElem要素位置42に所定の順序で取得されている} 43 IS)44である場合、{(in_array(ELEM $、の$ this - > seqArr))が45 (; $ I <の$ this - >長さ; $ I ++ $ I = 0 {46のためのものである)47 {48 IF(の$ this - > seqArr [$ I] == $ ELEM )49{50リターン$ I + 1 ; 51 } 52 } 53 } 54他の55 {56リターン"!ELEMないシーケンスでエラー!" ; 57 } 58 } 59 60 //获取给定元素在顺序表リスト中的上一个元素61パブリック関数getPriorElem($ ELEM )62 {63 IF(in_array($ ELEM、の$ this - > seqArr))64 {65用($ I = 0; $ I <の$ this - >長さ; $ I ++ )66 {67(の$ this - > seqArr [$ i]を== $ ELEM && $ I == 0の場合)68 {69リターン「エラー:これは、シーケンスの最初のElemのです!」; 70 } 71 ELSEIF(の$ this - > seqArr [$ i]を== $ ELEM )72 {73リターンの$ this - > seqArr [$ I-1 ]; 74 } 75 } 76 } 77、他78 {79リターン"エラー!" ; 80} 81 } 82 83 //次の要素は、パブリック関数の順次リストリストに指定された要素を取得getNextElem 84($ ELEM )85 {86 IF(in_array(ELEM $、の$ this - > seqArr))87 のための{88( $ I <の$ this - >長さ; I 0 $ = $ I ++ )89 (。 - > -の$ this - > seqArr [$ I] == I == $ $ ELEM &&($この長さ1 {90 IFを)) 91は、{92リターン"エラー:これは、シーケンスの最後ELEMだ!" ; 93 } 94 ELSEIF(の$ this - > seqArr [$ I] == $ ELEM )95 {96リターンの$ this - > seqArr [$ I + 1 ] ; 97 } 98 } 99 } 100 101他の{102リターン"!ELEMていないシーケンスエラーで!" ; 103 } 104 105 } 106 107 //インデックス第2のテーブル要素ELEMを追加するために、新しい順序テーブル108公的を返します機能InsertList($インデックス、$アイテム)109{110(の$ this - >長さ== 0 || $インデックス>の$ this - >長|| $インデックス<0の場合)111 {112リターン"エラー!" ; 113 用} 114($ I =(の$ this - >長-1); $ I> $インデックス-1; $ i-- )115 {116の$ this - > seqArr [$ I + 1] =の$ this - > seqArr [$ I ]; 117 } 118の$ this - > seqArr [$インデックス] = $ ELEM 119の$ this - >長さ=の$ this - >長さ+ 1 120リターンの$ this - > seqArr。121 } 122 123 //顺序表删除第インデックス中一个元素ELEM、返回新的顺序表124パブリック関数DeleteList($インデックス)125 {126 IF(の$ this - >長さ== 0 || $インデックス>ます$ this- >長|| $インデックス<0 )127 {128リターン"エラー!" ; 129 } 130未設定(の$ this - > seqArr [$インデックス])。131の$ this - > length-- ; 132リターンます$ this->seqArr; 133 } 134 } 135 136 $ ARR = [6 '好'、 '你'、9,3.14 ]。137 $ SE =新しいシーケンス($ ARR )。138 //のvar_dump($ SE-> getElem(1)); エコー"\ rを\ n"は、139 //のvar_dump($ SE-> getListLen($ arrが)); エコー"\ rを\ n"は、140 //のvar_dump($ SE-> getLocateElem(9)); エコー"\ rを\ n"は、141 //のvar_dump($ SE-> getPriorElem(9)); エコー"\ rを\ n"は、142 //のvar_dump($ SE-> getNextElem(9)); エコー"\ rを\ n"は、143 //ますprint_r($ SE-> InsertList(1,81)); エコー"\ rを\ n"は、144ますprint_r($ SE-> DeleteList(3))。エコー"\ rを\ n"は、

 

 

 

 

 

 

おすすめ

転載: www.cnblogs.com/dreamofprovence/p/11809768.html