我是否错误地宣布了结构?我尝试根据此错误检查其他几个类似的问题,仍然无法找到解决方案。需要你的帮助来解决它。谢谢提前。
#include <stdio.h>
#include <stdlib.h>
struct Node{
int info;
struct node *link;
} ;
void display(struct node *start);
int main()
{
struct node *start=NULL;
int choice;
int num;
while(1)
{
printf("\n1. Display \n9. Exit \n");
printf("\nEnter your choice\n\n\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
display(start);
break;
default:
printf("\nInvalid choice");
}
}
}
void display(struct node *start)
{
struct node *p;
if(start==NULL)
{
printf("List Is Empty");
return;
}
p=start;
while(p!=NULL)
{
printf("%d",p->info); // Getting Error in these 2 Lines
p=p->link; // Getting Error in these 2 Lines
}
}
答案 0 :(得分:0)
您声明了指向struct node
的指针,但未定义该类型。 C区分大小写。
你得到错误的原因是,在你尝试取消引用指向结构的指针之前,编译器实际上需要知道布局。
答案 1 :(得分:0)
看起来像是一个字符大小写问题:你有struct Node
,但是struct node *
,它不是完整的,不是完全没有。
答案 2 :(得分:0)
看一下这个Struct节点*和struct Node *:
您的代码中没有定义为struct node,因为首先使用了struct Node
#include <stdio.h>
#include <stdlib.h>
struct node ///<<< fix
{
int info;
struct node *link;
} ;
void display(struct node *start);
int main()
{
struct node *start=NULL;
int choice;
int num;
while(1)
{
printf("\n1. Display \n9. Exit \n");
printf("\nEnter your choice\n\n\n");
scanf("%d",&choice);
switch(choice)
{
case 1:
display(start);
break;
default:
printf("\nInvalid choice");
}
}
}
void display(struct node *start)
{
struct node *p;
if(start==NULL)
{
printf("List Is Empty");
return;
}
p=start;
while(p!=NULL)
{
printf("%d",p->info); // Getting Error in these 2 Lines
/// struct node and struct Node are diffrent things
p=p->link; // Getting Error in these 2 Lines
}
}