2011-02-13 16 views
5

मैं डेटा संरचनाओं और लिंक्ड सूचियों का अध्ययन कर रहा हूं, लेकिन मुझे एक लिंक्ड सूची की एक प्रति बनाने की अवधारणा नहीं मिल रही है। क्या कोई इसे समझ सकता है, संभवतः छद्म कोड या सी कोड का उपयोग कर?आप एक लिंक्ड सूची को दूसरी सूची में कैसे कॉपी करते हैं?

उत्तर

16

एक लिंक्ड सूची डुप्लिकेट करने के लिए तर्क पुनरावर्ती और निम्नलिखित टिप्पणियों पर आधारित है:

  1. खाली सूची के क्लोन खाली सूची है।
  2. पहले नोड एक्स और शेष नोड्स xs के साथ एक सूची का क्लोन x की एक क्लोन के लिए x की एक प्रति है।

आप सी ++ में लिंक्ड सूची सांकेतिक शब्दों में बदलना है, तो यह बहुत साफ हो सकता है:

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

Node* Clone(Node* list) { 
    if (list == NULL) return NULL; 

    Node* result = new Node; 
    result->value = list->value; 
    result->next = Clone(list->next); 
    return result; 
} 
+2

यह वास्तव में कोड का एक अच्छा टुकड़ा है! – LunaticSoul

5

क्या आप समझते हैं कि किसी मौजूदा सूची में नया नोड कैसे जोड़ें? और क्या आप समझते हैं कि कैसे एक सूची (यानी फिर से खत्म) कैसे करें? एक सूची की प्रतिलिपि सिर्फ इन दोनों परिचालनों को एक साथ कर रही है (प्रत्येक तत्व के लिए ट्रैवर्स लिस्टा; तत्व की प्रतिलिपि बनाएँ और इसे सूची बी में एक नया नोड के रूप में जोड़ें)।

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