を使用して二重リンクリストのノード数をカウントし、私はこれまで何をやったかである:は、ここで再帰
struct rep_list {
struct node *head;
struct node *tail;
}
typedef rep_list *list;
int length(const list lst) {
if (lst->head == NULL) {
return 0;
}
else {
lst->head = lst->head->next;
return 1 + length(lst);
}
}
をこれは動作しますが、パラメータが変更されますと、リストの先頭は、関数が受け入れます。私はそれを修正する方法を知らない。
私は関数定義を変更することはできないので、常にリスト変数を受け入れる必要があります。
アイデア?
編集:コメントにTyler Sが示唆したことを試みましたが、別の問題が発生しました。最初にノード*変数を作成すると、lst-> headを指すはずです。しかし、関数を呼び出すたびにlst-> headに戻り、私は前進することができません。
リストの状態を変更しないように一時的な 'node *'を作成する必要があると思います。 'lst-> head = lst-> head-> next'を実行すると、変更されたようです。 –
提案していただきありがとうございます。私が作った編集を見てください。 – Rrmm