链接列表C错误

时间:2011-05-23 20:48:57

标签: c

运行此代码时出现分段错误错误。我在gdb中运行它时没有收到错误。当我<我也没有得到这个错误。 17。

void test() 
{
    struct node *listHead=NULL;
    int i=0;
    while(i<17)
        addTail(&listHead,createNode(i++));
}

struct node* createNode(int i)
{
    struct node *n = malloc(sizeof(*n));
    n->item = i;
    return n;
}
void addTail(struct node **listHead, struct node *n)
{
    if(*listHead!= NULL)
    {
        struct node *temp = *listHead;

        while(temp->next != NULL)
        {
            temp = temp->next;
        }
        temp->next = n;
    } else 
    {
        *listHead= n;
    }
}

3 个答案:

答案 0 :(得分:6)

您没有正确初始化新元素。

n->next = NULL;添加到createNode功能。

答案 1 :(得分:0)

嗯,事实上你的主要内容是insertTail但代码中有addTail

答案 2 :(得分:0)

你正在使用'malloc',它不会清除(填充零)它分配给它的内存空间。在你的第一种情况下(添加头部),addTail只是使新分配的节点成为列表头,完成一个很可能非空的“下一个”字段。

  1. 尝试使用calloc(1,sizeof(node))