My List は、これら 2 つの構造体を介して実装されます。1 つ目はリスト内の項目を含み、2 つ目はリスト自体を含みます。
typedef Employee Item;
typedef struct ListNodeTag {
Item item;
struct ListNodeTag *next;
} ListNode;
typedef struct {
int size;
ListNode *first;
} List;
次の再帰関数を使用してリストの内容を逆にしようとしていますが、リストに複数の項目があるとセグメンテーション違反が発生します。
void Reverse(List *L){
ListNode *q,*p;
q = L->first;
p = q->next;
if(p == NULL)
return;
Reverse(L);
q->next->next = q;
q->next = NULL;}
問題は、リストのメンバーを関数の引数として渡す代わりに、リスト自体へのポインターを渡しているという事実にあると思います。このコードを変更して、別の引数を渡さずに機能させるにはどうすればよいでしょうか?