0
typedef struct A A;
typedef struct A* AList;
struct A{
char* name;
AList *next;
};
AList create(char *name)
{
AList new = (AList)malloc(sizeof(AList));
new->name = name;
new->next = NULL;
return new;
}
void add(char* name, AList *aList)
{
AList list = *aList;
if (list == NULL)
{
list = create(name);
*aList = list;
}
else
{
while (list->next != NULL)
list = list->next;
list->next = create(name);
}
}
您好!這是我有麻煩的代碼。一切工作正常,我只在代碼的最後兩行得到「從不可指針類型的賦值」,我不知道爲什麼。如果我改變指針,使它們具有兼容的類型(在我看來,即list = * list-> next;),我得到分段錯誤。我怎樣才能解決這個問題? 感謝您的幫助, 粘膜鏈接列表/指針C
有一個原因,我不建議做類型別名是指針,就像你的'AList'類型的別名,因爲那麼很容易忘記這是一個指針,並錯誤地做一些指針指針,像你做'next'結構成員,或分配錯誤的大小。 –
儘量不要將指針隱藏到'typedef'別名中 - 您的'create'函數是錯誤的,您爲'AList'分配空間,這是'A *',而您應該爲'struct A'分配空間。 – Holt
我不是一個純粹的代碼,但是這樣看起來不是很好嗎?還有更多,所以我應該爲A分配內存,但返回A *,如 AList new =(AList)malloc(sizeof(A)); ? – Muco