競合のハッシュテーブルを解決するためのジッパー方法

紛争を解決するためのジッパーの方法。ハッシュは、その値が0キー配列形式リンクされたリストに2つの場所に格納され、0になった後、競合解決の練習のジッパー方法はKEY3とKEY14として、リスト中の同一のハッシュ値の全ての鍵ようになっています。あなたは私の言葉を理解できない場合は、次の例を見て、理解して印刷情報を見てください。何ジッパー方法と、そのリストです。

クラスHashNode { 
  パブリック$キー。
  公共$値; 
  公共$ NEXTNODE。
  パブリック関数__construct($キー、$値、$ NEXTNODE = NULL){ 
    の$ this - >キー= $キー。
    の$ this - >値= $値; 
    の$ this - > NEXTNODE = $ NEXTNODE。
  } 
} 
Hashtableクラス{ 
	プライベートの$ arrが。
	プライベート$サイズ= 10; 
	パブリック関数の__construct(){ 
		の$ this - > ARR =新しいSplFixedArray(の$ this - >サイズ); 
	} 

	パブリック関数SimpleHash($キー){ 
		$ ascTotal = 0。
		$ STRLEN = strlen関数($キー)。
		以下のために($ iが= 0; $ I <$ strlenを、$ I ++){ 
			$ ascTotal + = ORD($キー[$ i])と; 
		} 
		$ ascTotal%の$ this - >サイズを返します。
	} 
	//使用拉链法
	//将最新的放在前面
	パブリック関数セット($キー、$ヴァル){ 
		$ハッシュ=の$ this - > SimpleHash($キー)。
		(ISSET(の$ this - > ARR [$ハッシュ])){もし
			$ newNode =新しいHashNode($キー、$ヴァル、の$ this - > ARR [$ハッシュ])。
		}他{ 
			$ newNode =新しいHashNode($キー、$ヴァル、NULL); 
		} 
		の$ this - > ARR [$ハッシュ] = $ newNode。
		trueを返します。
	} 

	パブリック関数のget($キー){ 
		$ハッシュ=の$ this - > SimpleHash($キー)。
		$現在の=の$ this - > ARR [$ハッシュ]; 
		(!空(現在$)){しばらく
			するif($の電流>キー== $キー){ 
				$の電流>の値を返します。
			} 
			= $の電流> NEXTNODE現在の$。	
		}	 
		NULLを返します。
	} 
	パブリック関数GETLIST(){
		リターンの$ this - > arrが。
	} 
}
$ newArr =新しいハッシュテーブル(); 
用($ I = 0; $ I <25; $ I ++){ 
	$キー= 'キー' $ I。
	$ newArr->セット($キー、$ I); 
} 
$ ARR = $ newArr-> GETLIST(); 
しますprint_r($ arrが)。

  

おすすめ

転載: www.cnblogs.com/zh718594493/p/12094098.html
おすすめ