2011-12-20 10 views
5

Düğüm:Bu yapı C# olarak işaretçiler olmadan bir sınıf olarak nasıl uygulanır? Bir sonraki elemanın ve listenin başına her öğe noktaları şu şekilde görünecektir listenin

typedef struct Node { 
    int value; 
    Node* next; 
    Node** head; 
} Node; 

başlığının bu nedenle biz Düğüm ** kafa kullanıyorlardı, değiştirebilir. Ben sınıfları referans olarak geçirilen biliyorum, bu yüzden böyle ilk 2 özelliklerini yapabilirsiniz:

class Node { 
    int value; 
    Node next; 
    ???? 
} 

Nasıl baş bağlıyor yapılır?

cevap

5

bir sargı sınıfı çift işaretçi yerini almak üzere olun:

class Reference<T> 
{ 
    public T Value {get; set;} 
} 
+2

Ve bu burada sorunu nasıl çözer? "Referans " ifadesinin kullanılması, ana düğümün yerel olarak yansıtılmasında bir değişikliğe neden olmayacaktır ... –

+5

Her Düğümün başı aynı Referans örneğidir. –

+0

@ReedCopsey'nin yanıtındaki LinkedList, aynı zamanda, Head düğümünü bulmak için aynı Reference örneğini kullanmalıdır. O zaman işe yarıyor ama bunu yapmanın "doğru" yolu olduğundan emin değilim. –

5

Genellikle, bu ihtiva eden nesneye, bir referans geçirilmesiyle gerçekleştirilir. Bu Bağlantılı liste için ise, örneğin, yapabilir:

class Node 
{ 
    int Value { get; set; } 
    Node Next { get; set; } 
    LinkedList list; 

    Node Head { get { return list.Head; } } 

    public Node(LinkedList parent) 
    { 
     this.list = parent; 
    } 
} 

Bu şekilde, ne zaman düğüm değişiklikleri içeren asıl listedeki "kafa" eleman, sınıfta özellik otomatik olarak yeni yansıtacaktır değer.

İlgili konular