我正在尝试编写一个程序以使用递归来反向链接列表。递归功能正常工作,除了终端 条件是,在函数完成后,被分配了值的指针变量(* start)不会在其中反映出来。
我放置了一些打印语句,发现在函数中该值已正确分配给指针。
void revList(node *hd,node *start){
if(hd->next==NULL){
cout<<start<<endl;
start=hd;
cout<<start<<endl; //this show it is being modified
return;
}
node *first=hd;
node *rest=hd->next;
first->next=NULL;
revList(rest,start);
cout<<first<<" "<<rest<<endl;
rest->next=first;
}
int main(){
node *head=new node;
head->val=9;
head->next=NULL;
addnode(head,6);
addnode(head,7);
addnode(head,8);
node *s;
revList(head,s);
cout<<s<<endl; //but it's not reflecting here.
while(s!=NULL){
cout<<s->val<<"->";
s=s->next;
}
return 0;
}
//output:
0x7ffd5c1422c0
0x1e45c80
0x1e45c60 0x1e45c80
0x1e45c40 0x1e45c60
0x1e45c20 0x1e45c40
0x7ffd5c1422c0
Segmentation fault (core dumped)//I'm not worried about this.