数据结构实验二(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;
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)