我正在尝试使用 C++ 反转一个链表,然后打印出反转的链表。
例如:原列表是1->2->3 还原后:3->2->1
但是当我试图打印出反向链表时, 3->2->1 变成了像 3<->2 这样的循环链表
以下是我的代码:
#include <iostream>
#include <sstream>
using namespace std;
class List{
public:
int value;
List *next;
List(int);
List(int, List *);
};
List::List(int v){
value = v;
next = NULL;
}
List::List(int v, List *ne){
value = v;
next = ne;
}
string IntToString(int val){
stringstream temp;
temp<<val;
return temp.str();
}
void print(List *l){
string output= "";
while(l->next != NULL){
output+=(IntToString(l->value)+"-->");
l = l->next;
}
output+=(IntToString(l->value)+"-->NULL");
cout<<output<<endl;
}
List reverse(List L){
if(L.next == NULL) return L;
List remain = reverse(*(L.next));
List *current = &remain;
while(current->next != NULL)
current = (current->next);
L.next = NULL;
current->next = &L;
//print(remain);
return remain;
}
List copy(List l){
return l;
}
int main() {
List L3(3);
List L2(2, &L3);
List L1(1, &L2);
List L4 = reverse(L1);
print(&L4);
return 0;
}
谁能告诉我为什么会这样?非常感谢!