q2演示链表操作:插入,显示和显示缺失//
编译器代码块告诉行
处的两个错误73和83我已经预期了;在'{'令牌
之前和输入结尾的预期声明或声明* /
但它也告诉我在函数中创建: 这两个错误都存在!当它们将它们引用到main()
时,它是如何可能的
#include <stdio.h>
#include <stdlib.h>
struct list
{
int a;
char name[20];
int roll;
struct list *next;
};
struct list *create(struct list *ptr)
{
int v,n;
printf("\nenter the value of the inputs");
scanf("%d",&n);
struct list *temp;
printf("\ndo u want to continue(y/n)");
scanf("%d",&v);
while(1)
{
if(v=='y')
{
ptr=(struct list*)malloc(sizeof(struct list));
printf("\nenter the roll number of the student");
scanf("%d",&ptr->roll);
printf("\nenter the name of the student");
gets(ptr->name);
printf("\nenter the marks of the student");
scanf("%d",&ptr->a);
ptr->next=NULL;
}
else
if(v=='n')
{
break;
}
return(ptr);
}
}
void display(struct list *ptr)
{
struct list *temp;
temp=ptr;
while(temp!=NULL)
{
printf("\nthe roll number of the student is%d",temp->roll);
printf("\nthe name of the student is%d",temp->name);
printf("\nthe marks of the student is%d",temp->a);
temp=temp->next;
}
}
void del(struct list *ptr,int c)
{
struct list *temp;
struct list *gtemp;
gtemp=temp=ptr;
while(temp->roll!=c)
{
gtemp=temp;
temp=temp->next;
}
gtemp->next=temp->next;
free(temp);
}
main()
{ //73
struct list *ptr;
int c;
ptr=NULL;
ptr=create(ptr);
display(ptr);
printf("\nenter the value of roll number");
scanf("%d",&c);
del(ptr,c);
display(ptr);
}//83
答案 0 :(得分:1)
关于第一个expected ; before'{' token
错误,而不是
main()
你应该使用完整的签名
int main(int argc, char **argv)
对于第二个错误,您应该首先正确缩进代码。
答案 1 :(得分:1)
正确检查{}组合。你在create {}函数里面大部分都写了display()函数。所以正确添加{}对。添加保持代码缩进 在display()函数定义之前添加一个结束'}' 和
printf("\nthe name of the student is%d",temp->name);
字符串应为%s。