我想通過使用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;
}
誰能告訴我,爲什麼出現這種情況?非常感謝!
太棒了!非常感謝! – LuZ