问题都标注了,自己看下改下。#include<stdio.h>
#include<stdlib.h>
#define op 90
typedef struct //定义存储的数据结构
{
int number;
char name[op];
int age;
struct Node* next;
} Naode; //不要用node,和上面的node有冲突。我帮你把所有的node都改成Naode了
typedef Naode* linklist;
int main()
{
int i,w;
char q;
linklist l,p,s,find;
l=(linklist)malloc(sizeof(Naode));
s=(linklist)malloc(sizeof(Naode));
find=(linklist)malloc(sizeof(Naode));
l->next=NULL;
do //这里开始是程序的主页面,设置了循环条件,用户选择退出才能离开程序
{
printf("请输入选择的操作类型:\n1、存入信息\n2、查找信息\n3、退出\n");
q=getchar();
switch(q) //用户选择操作类型
{
case '1':
printf("请分别输入学号、名字、年龄并用逗号隔开\n");
p=(linklist)malloc(sizeof(Naode));
scanf("%d,%s,%d",&p->number,p->name,&p->age); // 语法:scanf("%d",&变量) ,要加&
p->next=l->next;
l->next=p->next; //类型不符:这边p是linklist型,l->next是struct *Node Next.所以才会错误。
printf("按下1显示所有信息记录,否则返回\n");
scanf("%d",&i);
if(i==1)
{
s->next=l->next; //类型不符:和上面一样
while(i==1&&!(s->next==NULL))
{
printf("学号:%d,名字:%s,年龄:%d\n",s->number,s->name,s->age);
s-s->next; //你这是要干什么??
}
printf("学号:%d,名字:%s,年龄:%d\n",s->number,s->name,s->age);
} //if
i=0;
break;
case '2':
find=l;
printf("请输入学号\n");
scanf("%d",&s->number); //语法:看上面
while(s->number!=find->number)
{
find=find->next; //类型不符:看上面
}
if(s->number!=find->number) return -1;
else
printf("学号:%d,名字:%s,年龄:%d\n",find->number,find->name,find->age);
break;
default:break;
} //switch
printf("继续操作请按下1\n否则退出程序\n");
scanf("%d",&w);
}while(w==1);
return 0;
}
|