2016-04-09 14 views
0

En küçük anahtarın sembol tablosundaki anahtar değerinden daha büyük veya eşit olarak nasıl döndürüleceğini anlayamıyorum .. Eğer birisi bana doğru yönde yönlendirebiliyorsa harika olacak çünkü nereden başlayacağımı bilmiyorumBağlantılı listede tavan nasıl yapılır?

public class LinkedListST<Key extends Comparable<Key>, Value> { 
    private Node first; 

    // a helper linked list data type 
    private class Node { 
     private Key key; 
     private Value val; 
     private Node next; 

    public Node(Key key, Value val, Node next) { 
     this.key = key; 
     this.val = val; 
     this.next = next; 
    } 
} 

public Key ceiling (Key key) { 
    Key ceiling = null; 
    for(Node x = first; x != null; x = x.next){ 
     if(first.key.compareTo(ceiling) > 0) 
      ceiling = key; 
    } 
    return null; //TODO 
} 
+0

İpucu: Aradığınız anahtarla listedeki her tuşa karşılaştırarak, liste yineleme. –

cevap

0

sizin Node sınıfında statik bir değişken oluşturun: o zaman

private static Key CEILING = null; 

Ve oluşturucu içinde, CEILING her yeni eklenen Key karşılaştır:

if(key > CEILING) // Just algorithm. Use compareTo() method in your case. 
    CEILING = key 

Bunun gibi, LinkedList'inizi doldurmanın sonunda en yüksek değere sahip bir key olacaktır.

VEYA:

if(key < CEILING) 
    CEILING = key // for smallest key 
+0

Merhaba, kodumu düzenlediğim yardım için teşekkürler. Döngünüm için mantığım ve if ifadem doğruysa – yenyen

+0

@yenyen'in iyi olup olmadığından emin değilim. Sadece 'dönüş tavanı 'yönteminden –