C ++反向链接列表而不更改原始列表

时间:2018-11-30 02:04:45

标签: c++

我正在尝试反向链接列表,但是我不想更改通过引用传递的原始链接列表,我该如何解决?

typedef Node * ListType 

ListType reverse(ListType list) {
   if (list == NULL) {
      return list;
   }
   ListType curr = list;
   //printList(list);               //list unchanged 
   ListType prev=NULL, next=NULL;
   while (curr != NULL) {     
      next = curr->next;
      curr->next = prev;
      prev = curr;
      curr = next;  
   }
   //printList(list);              //list changed(I dont't want it changed)
   return prev;
}

1 个答案:

答案 0 :(得分:0)

由于您不想更改原始列表,因此必须对其进行复制。遍历原始列表,将新节点放在反向列表之前,然后返回。

例如:

UIActivity.ActivityType

只需确保调用者在使用后释放返回的列表即可。