В обратной функции выдается ошибка ошибки сегментации. Функция реверса вызывается после первого дисплея (голова), а второй дисплей (голова) не может быть запущен из-за ошибки. Пожалуйста, проверьте мой выделенный текст обратный код (). Я использовал двойной указатель.
#include<iostream>
using namespace std;
typedef struct node{
int data;
struct node *next;
}node;
void reverse(node **head);
node* create_list(int n);
void display(node *head);
int main(){
cout<<"Enter the frequency of nodes: ";
int n{0};
cin>>n;
node *head=create_list(n);
display(head);
reverse(&head);//Segmentation Fault !
display(head);
return 0;
}
node* create_list(int n){
node *head=NULL;
node *p=NULL;
node *temp=NULL;
for(int i{0};i<n;i++){
temp=(node*)malloc(sizeof(node));
cin>>temp->data;
cout<<endl;
temp->next=NULL;
if(head==NULL){
head=temp;
}
else{
p=head;
while(p->next!=NULL){
p=p->next;
}
p->next=temp;
}
}
return head;
}
void display(node *head){
node *p=head;
while(p!=NULL){
cout<<p->data<<"\t";
p=p->next;
}
}
void reverse(node **head){//Code where segmentation fault occured is due to this function
node *p=NULL;
node *current=*head;
node *temp=current->next;
while(temp->next!=*head){
p=temp->next;
temp->next=current;
current=temp;
temp=p;
}
}