2011-08-31 34 views
1

我正在學習如何在C中實現鏈表。我瞭解常規鏈表的基本知識,如何添加值,如何打印它們等,但我一直在想 - 是嗎?可以添加其他結構作爲鏈接列表中的值?我的意思是:C中的鏈表中的結構

typedef struct personal_info { 
    char *name; 
    char *surname; 
    int phone_number; 
} Info; 

typedef struct llist { 
    Info *info; 
    struct llist *next; 
} List; 

而且當我這樣做,我怎麼訪問Info結構的值是多少?

List *l; 
l = malloc(sizeof(List)); 

l->info->name = 'name'; 
l->info->surname = 'surname'; 
l->info->phone_number = 1234567890; 

該代碼崩潰,所以我肯定做錯了什麼。你能給我一些提示如何實現這一點?

+0

你爲節點分配了內存嗎? (信息字段) –

+0

您需要將內存分配給您的信息*。 –

回答

3

您還需要爲信息結構分配內存:

l = malloc(sizeof(List)); 
l->info = malloc(sizeof(Info)); 

l->info->name = "name"; 
l->info->surname = "surname"; 
l->info->phone_number = 1234567890; 
+0

謝謝!編譯器給了我警告,雖然:'警告:賦值使得整型指針沒有轉換' – makos

+0

對字符串使用引號(''')。撇號**不正確**。 – Marlon

+0

啊,我的壞!另一個愚蠢的錯誤。凌晨2點編碼不是一個好主意。:) – makos

3
List *l; 
l = malloc(sizeof(List)); 
l->info = malloc(sizeof(Info)); 

你要的malloc內存的結構以及

還要記住,如果你在實施任何函數從列表中刪除節點,您需要釋放該結構,然後釋放該節點。