所以我有一個鏈表建立這樣的:初始化錯誤誤會......需要一些澄清
#define MAX 20
//structure for a single linked list
typedef struct element {
int info;
struct element *link;
} Tnode;
//structure for a grapgh
typedef struct graphAdjList {
int nodes;
Tnode *adjList[MAX];
} Tgraph;
在我的代碼我有它設置如下:
Tgraph *graph;
graph = (Tgraph*) malloc(sizeof(Tgraph));
graph -> nodes = 0;
for(i; i < 20; i++){
graph->adjList[i]= NULL;
}
graph->adjList[2]->info = 222;
現在,如果我編譯這我在這最後一行得到訪問衝突。是否我沒有爲結構的Tnode部分保留內存,或者我是否缺少某些東西。我如何初始化數組,以便可以爲數組的任何元素中的信息賦值?
謝謝
傑森
好吧,如果我有Tnode * newnode,* tail = NULL,* head = NULL;然後newnode =(Tnode *)malloc(sizeof(Tnode)); \t \t \t newnode-> info = 1; \t \t \t newnode-> link = NULL; \t \t \t graph-> adjList [k] - > link = newnode;這會正確設置鏈接列表嗎? – Xintaris
假設內存分配給'graph-> adjList [k]',那麼至少可以避免涉及不分配內存的問題。另外,不要強制轉換'malloc'的返回值;鑄造可以隱藏其他問題。 –