创建节点数组

时间:2015-04-28 05:04:19

标签: c arrays linked-list

我为链表创建了一个节点数组,但是当我尝试遍历打印链表时,我崩溃了。当我不创建节点数组时,我的遍历工作得很好,所以我认为这段代码是我的问题。

   typedef struct node {
book data;
struct node *next;
} *Node;

Node newNodes[100];
int i = 0;
for (i=0; i<n; i++) 
{
    newNodes[i] = (Node)malloc(sizeof(struct node)); 
    newNodes[i]->next = NULL;
    newNodes[i]->data.time = NULL;
    newNodes[i]->data.format = NULL;     
}


//return struct that holds the array;

显然我做错了,顺便说一句,insert_node是一个非常简单的插入算法。谁能看到我出错的地方?

1 个答案:

答案 0 :(得分:1)

  

谁能看到我出错的地方?

发布的代码显示您已根据malloc返回的值创建了100个指针并为其分配了内存。但是,您尚未将它们链接在一起以形成链接列表。

也许您打算使用:

for (i=0; i<n; i++) 
{
    newNodes[i] = (Node)malloc(sizeof(struct node)); 
    newNodes[i]->next = NULL;
    newNodes[i]->data.time = NULL;
    newNodes[i]->data.format = NULL;     
}

// Make the links between the nodes.
for (i=0; i<n-1; i++) 
{
   newNodes[i]->next = newNodes[i+1];
}

这将使newNodes[0]成为链表的头部。

<强> PS

使用一个名为typedef的{​​{1}}指针非常混乱,至少对我而言。我建议使用:

Node