:関数に渡されるパラメータは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;
}
}
そしてメインの関連コードは次のとおりです。
main(){
struct node *temp;
temp=start;
/*Code to insert values*/
rev(NULL,temp);
}
今のコードは、入力を受け取り、完全にそれを印刷しますが、私の後rev()
関数を呼び出すと、同じトラバーサル関数は何も出力しません。 私はラインによってデバッガの行のコードを実行しなかったのnそれは私に次のような出力が得られた:cur
は、if
何とかNULLであるため、また
REV(PREV = 0x0の、CUR = 0x0の)
をrev()
の部分は実行されず、else
のみが一度だけ実行されます。 create()
関数で入力を取得すると、リンクリストの最初の要素に更新を開始し、メインでもprintステートメントがそれを証明します。 しかし、なぜ関数rev()
は常に入力パラメータをNULLとして受け取るのですか?
追加情報が必要な場合は、ご意見ください。
ああ!お疲れ様でした。私は 'rev()'関数が何か問題があったのかどうかまだ分かりません。私の 'create()'は本当に面倒です。 ありがとうもう一度:) – Shanky