指针问题

时间:2010-08-28 21:52:01

标签: c linux

我是linux c编程的新手,我有一个简单的程序只是为了学习,当我编译它时,它给我错误“解除指向不完整类型的指针”这里是我的代码

struct Node
{
    struct Node* left;
    struct Node* middle;
    struct Node* right;
    int nodeData;
    int nodeLevel;
    char isVisted;
};
struct ListNode
{
    struct Node* data;
    struct ListNode* next;
};

struct List
{
    struct NodeList* head;
    struct NodeList* tail;
    int count;
};

typedef struct ListNode ListNode;
typedef struct Node Node;
typedef struct List List;

ListNode* InitListNode(Node* data)
{
    ListNode* listNode=(ListNode*)calloc(1,sizeof(ListNode));
    listNode->data=data;
    listNode->next=NULL;
    return listNode;
}

List* InitList()
{
    List* list=(List*)calloc(1,sizeof(List));
    list->count=0;
    list->head=list->tail=NULL;
}

void EnQue(Node* data,List* que)
{
    if(que->count==0)
    {
        que->tail=que->head=InitListNode(data);
        que->count++;
    }
    else
    {
        que->tail->next=InitListNode(data); //here error is problem comes 
        que->tail=que->tail->next;//here error is problem comes
        que->count++;
    }
}

请帮助..

2 个答案:

答案 0 :(得分:6)

struct List中的head和tail属于NodeList类型。应该是ListNode?

答案 1 :(得分:2)

您的List定义中似乎有拼写错误。我认为它应该是ListNode,而不是未定义的NodeList。请尝试以下

struct List
{
    struct ListNode* head;
    struct ListNode* tail;
    int count;
};