2011-02-13 117 views

回答

16

用於複製一個鏈表的邏輯是遞歸併且基於以下觀察:

  1. 空列表的克隆是空列表。
  2. 具有第一個節點x和其餘節點xs的列表的副本是x的副本,前綴爲xs的副本。

如果您在編碼C++的鏈表,這可能是非常乾淨:

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 2015-09-14 01:23:24

5

您知道如何將新節點添加到現有列表嗎?你知道如何遍歷(即迭代)列表嗎?複製列表只是同時執行這兩個操作(遍歷ListA;對於每個元素,複製元素並將其作爲新節點添加到ListB)。

相關問題