2016-10-08 12 views
1

私は次のようにスキップリストを実装しています:スキップリストの頭と尻尾は無限大/負の無限大のキーを持っていますが、それらはすべての数字キーを使用している、不明な型のスキップリスト挿入の無限大/無限?

私がオンラインに見てきた説明では
template<typename Key, typename Value> class SkipList {...} 

私は<==事業者は、キーのために利用可能であると仮定することができますので、私は約string < string

を心配する必要はありません。しかし、どのように私は/ヘッドとして持っている最小/最大のタイプの値を見つけるのですかテールポインタ? INT_MAXINT_MINのようなものはありますか?

答えて

1

private SkipListItem<K, E> posInfinity;の2つのプロパティを使用して、後でSkipListItemsと比較することができます。 ...後で、その後

private SkipListItem<K, E> negInfinity; 
private SkipListItem<K, E> posInfinity; 

public SkipListDictionary(K[] keys, E[] elements) { 

    this.randomGenerator = new Random(); 
    this.negInfinity = new SkipListItem<K, E>(); 
    this.posInfinity = new SkipListItem<K, E>(); 

    this.constructSkipList(keys, elements); 
} 

そして:ここ

は、私はそれについていった方法です

private SkipListItem<K, E> searchKey(K key) { 

    SkipListItem<K, E> currentElement = this.lastListStart; 

    while(currentElement.lower != null) { 

     currentElement = currentElement.lower; 

     while(currentElement.next != null && currentElement.next.getItem() != posInfinity && 
       currentElement.next.getKey().compareTo(key) < 1) { 

      currentElement = currentElement.next; 
     } 
    } 

    return currentElement; 
} 

PS:私はSkipListItem下を参照するために、上のリストのプロパティreferenceItemを使用しました建設を容易にするため、SkipListItemを返すこのgetItemがあるのはこのためです。しかし、これを解決するにはこれが最善の方法だとは思わないが、それは私が行ったことだ。

関連する問題