2011-12-20 9 views
5

सूची के नोड जहां अगले तत्व और सूची के मुखिया के हर तत्व अंक इस प्रकार दिखाई देगा:इस संरचना को सी # में पॉइंटर्स के बिना कक्षा के रूप में कैसे कार्यान्वित करें?

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

सिर, बदल इसलिए हम नोड ** सिर उपयोग कर रहे थे सकता है। मैं जानता हूँ कि कक्षाओं संदर्भ के रूप में पारित कर रहे हैं, इसलिए मैं इस तरह पहले 2 गुण बना सकते हैं:

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

कैसे सिर विशेषता बनाने के लिए?

उत्तर

5

एक आवरण वर्ग एक डबल सूचक की जगह लेने के लिए बनाओ:

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

और यह समस्या को हल कैसे करता है? 'संदर्भ ' का उपयोग करने से माता-पिता नोड में स्थानीय रूप से प्रतिबिंबित होने का कोई कारण नहीं होगा ... –

+5

यह होगा यदि प्रत्येक नोड का सिर संदर्भ का एक ही उदाहरण है। –

+0

@ReedCopsey के उत्तर में लिंक्डलिस्ट को अपने सिर नोड को खोजने के लिए उसी संदर्भ उदाहरण का भी उपयोग करना चाहिए। फिर यह काम करता है, लेकिन मुझे यकीन नहीं है कि यह करने का यह "सही" तरीका है। –

5

आमतौर पर, यह युक्त वस्तु के लिए एक संदर्भ गुजर द्वारा नियंत्रित किया जाता। यदि यह एक लिंक्ड सूची के लिए है, उदाहरण के लिए, आप कर सकते हैं:

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; 
    } 
} 

इस तरह, जब नोड परिवर्तनों वाली वास्तविक सूची के तत्व "सिर", कक्षा में संपत्ति स्वचालित रूप से नए प्रतिबिंबित करेगा मूल्य।

संबंधित मुद्दे