C错误:解除引用指向不完整类型链接列表的指针

时间:2017-10-27 13:28:25

标签: c

在我的c程序中,我创建了一个单链表,我们必须使用prev节点插入节点,我在main()函数中收到此错误:

  

取消引用指向不完整类型'struct Node'的指针

我不确定为什么会出错。

while((temp->next != NULL) && (temp->next->data < randomNumData)) - 错误在这里

typedef struct _Node
{       
        int data;
        struct Node *next;
} ListNode;

ListNode *newList();
ListNode *insertNode(ListNode *prev, int data);

int main()
{
        ListNode *head = newList();

        int randomNumData;
        ListNode *temp = head;
        int i;

        for(i = 0; i < 11; i++)
        {
                randomNumData = random()%1001;
                while((temp->next != NULL) && (temp->next->data < randomNumData))
                {
                        temp = temp->next;
                }
                temp->data = randomNumData;
                head = insertNode(temp, randomNumData);
        }

        printList(head);
}

// returning the head of a new list using dummy head node
ListNode *newList()
{
        ListNode *head;
        head = malloc(sizeof(ListNode));
        if(head == NULL)
        {
                printf("ERROR");
                exit(1);
        }

        head->next = NULL;
        return head;
}

ListNode *insertNode(ListNode *prev, int data)
{
        ListNode *temp = prev;
        prev->next = temp->next;
        temp->next->data = data;

        return temp;
}

2 个答案:

答案 0 :(得分:2)

在宣布下一个时,你缺少下划线。

typedef struct _Node
{       
    int data;
    struct _Node *next;
} ListNode;

答案 1 :(得分:0)

看起来你没有名为Node的结构。从其他文件导入它或只是实现它。 C很好,但到目前为止还不是魔术师。