schrieb ich eine rekursive Funktion eine verknüpfte Liste zu umkehren wie folgt:Der mitgelieferte Parameter für die Funktion wird NULL?
struct node{
int val;
struct node *next;
};
//Global pointer to structure
struct node *start=NULL,*head=NULL;
//*Function to input node*
void create(int data){
struct node *temp;
temp=(struct node *)malloc(sizeof(struct node));
if(start == NULL){
temp->val=data;
temp->next=NULL;
start=temp;
head=temp;
}
else{
temp->val=data;
temp->next=NULL;
head->next=temp;
head=temp;
}
}
*Function to reverse the linked list*
void* rev(struct node *prev,struct node *cur){
if(cur!=NULL){
printf("Works");
rev(cur,cur->next);
cur->next=prev;
}
else{
start=prev;
}
}
und der damit verbundenen Code in Haupt ist:
main(){
struct node *temp;
temp=start;
/*Code to insert values*/
rev(NULL,temp);
}
nun der Code nimmt die Eingabe und druckt es perfekt, aber nachdem ich Call rev()
Funktion die gleiche Traversalfunktion druckt nichts. Ich habe den Code auf Debugger Zeile für Zeile n es gab mir die folgende Ausgabe laufen:
rev (i = 0x0, CUR = 0x0)
Auch da cur
ist irgendwie NULL, die if
Teil von rev()
wird nie ausgeführt und nur die else
wird einmal ausgeführt. Wenn ich die Eingabe in meiner create()
Funktion nehme, aktualisiere ich den Start auf das erste Element der verknüpften Liste und sogar in main eine Print-Anweisung beweist, dass es so ist. Aber warum erhält die Funktion rev()
immer Eingangsparameter als NULL?
Bitte kommentieren Sie, wenn zusätzliche Informationen erforderlich sind.
Oh wow! Danke für Ihre Bemühungen. Ich bin mir noch nicht sicher, ob etwas mit der 'rev()' Funktion nicht stimmt. Es tut mir leid, mein 'create()' ist in der Tat unordentlich. Danke nochmal :) – Shanky