Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 指针问题_C_Linux - Fatal编程技术网

C 指针问题

C 指针问题,c,linux,C,Linux,我是LinuxC编程新手,我有一个简单的程序只是为了学习,当我编译它时,它会给我错误“取消引用指向不完整类型的指针”,这是我的代码 struct Node { struct Node* left; struct Node* middle; struct Node* right; int nodeData; int nodeLevel; char isVisted; }; struct ListNode { struct Node* data

我是LinuxC编程新手,我有一个简单的程序只是为了学习,当我编译它时,它会给我错误“取消引用指向不完整类型的指针”,这是我的代码

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++;
    }
}

请帮助。

结构列表中的头和尾属于节点列表类型。应该是ListNode吗

结构列表中的头和尾是NodeList类型。应该是ListNode吗

看起来您对
列表的定义有误。我认为应该是已定义的
ListNode
,而不是未定义的
NodeList
。试试下面的方法

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

看起来您对
列表的定义有误。我认为应该是已定义的
ListNode
,而不是未定义的
NodeList
。试试下面的方法

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

该错误显示在哪一行?在列表结构中,节点列表类型在哪里声明?以后可以取消对该类型变量的引用。
“ListNode*ListNode=(ListNode*)calloc(1,sizeof(ListNode));
编码不好。这没有错,只是C不好。请使用
ListNode*ListNode=malloc(sizeof(ListNode))
并记住检查
listNode!=NULL
。结构列表中定义的NodeList在哪里?我看到的是listNode,但不是NodeList。您是否收到任何编译警告?该错误显示在哪一行?在列表结构中,声明的NodeList类型在哪里?您稍后将取消引用该类型的变量。
“listNode*listNode”=(ListNode*)calloc(1,sizeof(ListNode));
编码不好。它没有错,只是C不好。使用
ListNode*ListNode=malloc(sizeof(ListNode))
并记住检查
listNode!=NULL
。结构列表中定义的NodeList在哪里?我看到了listNode,但没有NodeList。您是否收到任何编译警告?thanx很多解决方案都是有效的。但有一件事,为什么编译器没有给出任何错误,说明NodeList不存在,因为我没有创建此结构。NodeList确实存在-but仅作为一个不完整的类型。在您的情况下,这将转换为“尚未指定其成员的结构”。这正是编译器告诉您的。thanx很多解决方案都是有效的。但有一件事,为什么编译器没有给出任何错误,说明NodeList不存在,因为我没有创建此结构。NodeList确实存在,但只是作为一个不完整的类型。在您的情况下,这将转换为“尚未指定成员的结构”.这正是编译器告诉你的。