我試圖動態分配指針列表結構,每個包含結構列表如下定義的指針:名單在C列表
struct node {
char *text;
struct node *next; };
我也使用一個typedef:
typedef struct node Node;
我創建節點列表通過聲明來保存每個列表如下:
Node **list;
list = (struct node**) malloc(sizeof(struct node*) * arraySize);
在每個list
我有我正在創建另一個列表如下節點:
list[i] = malloc(sizeof(struct node*) * subArraySize);
我有幾個問題:
- 這是這樣一個問題的正確實施?
- 如何訪問較大列表中每個列表的第一個節點的
text
數據成員?
如果我的問題含糊不清,請告訴我。我對這個話題的困惑使我很難正確地說出我的問題。
您的typedef沒有任何用處。您使用單詞「list」(和變量名稱「list」)來引用列表和數組。當您不清楚您有任何圖層正常工作時,您正試圖使用間接塔。你必須先從簡單的問題入手,並處理複雜的問題,否則你肯定會失敗。 – Beta
看起來你試圖構建一個包含指向幾個鏈表頭的數組,對吧?第二部分,'list [i] = malloc(sizeof(struct node *)* subArraySize);'是一種誤導,因爲您提前爲多個'節點'分配了連續的內存塊,而通常您可能會在創建時爲每個節點分配內存,或者至少你不會使用這個非常嚴格的二維數組結構。 – 2rs2ts
如果您嘗試製作指向鏈接列表的動態數組指針,則輔助malloc沒有任何意義。後者是*鏈接列表*,因此不需要分配矢量(假設「下一個」成員不僅僅是出於窗口修飾或其他惡意目的)。那就是說,你真的試圖解決什麼問題,一個帶有碰撞鏈的散列表? – WhozCraig