数据结构实验二(C)error: dereferencing pointer to incomplete type

常为结构体未定义
————————

第一种情况:已有结构体定义在.h文件中,当前文件未包含该结构体所在 .h 文件。

解决办法:包含对应头文件。

第二种情况:已有结构体定义在.c文件中。

解决办法:将该结构体定义到.h文件中,然后再包含该头文件,或者直接将该结构体定义到当前.c文件中。

复制代码
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#ifndef __linkedList__H
#define __linkedList__H   //防止头文件被多次包含
#define MaxSize 100
typedef int elementType;
/*链表的定义*/
typedef struct{        //*****正确写法:typedef struct node{*****
    elementType data;       //存放数据
    struct node* next;      //当前表
}node;
#endif

/*插入值为x的元素并保持递增有序性*/
void listInsert_(node* L, elementType x)
{
    node* p=L;
    node* u;
    while((p->next->data)<x){     //报错  源文件已包含该.h文件  error: dereferencing pointer to incomplete type
        p = p->next;
    }
    u = (node*)malloc(sizeof(node));
    u->data = x;
    u->next = p->next;
    p->next = u;
}

/*4. 将单链表L中的奇偶数项节点分解开,分别放入新的单链表中,同时输出到屏幕上*/
void analyzeList(node* L, node* L1, node* L2)
{
node* u;
u = (node*)malloc(sizeof(node));
node* p=L;
node* p1=L1;
node* p2=L2;
while(p->next!=NULL)
{
u = p->next;
p->next = u->next;
u->next = NULL;
if((p->next->data)%2==0){  //报错  error: dereferencing pointer to incomplete type

p1->next = u;

p1 = p1->next;
}else
{
p2->next = u;
p2 = p2->next;
}
}
}


/*求两个递增有序单链表L1和L2中的公共元素,放入L3中*/
void SimilarList(node* L1, node* L2, node* L3)
{
node* u =(node*)malloc(sizeof(node));
node* p1 = L1->next;
node* p2 = L2->next;
node* p3 = L3->next;
while(p1->next!=NULL && p2->next!=NULL)
{
if(p1->next->data == p2->next->data)
{
u = p1->next;
u->next = NULL;
p3->next = u;
p3 = p3->next;
p1 = p1->next;
p2 = p2->next;
}else if(p1->next->data < p2->next->data)   //报错  error: dereferencing pointer to incomplete type
{
p1 = p1->next;
}else{
p2 = p2->next;
}
}


}

 

复制代码
posted @   cvhgfds  阅读(1252)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示