帮忙看看吧,实在是想烦了,一点点小错误而已了
#include<stdio.h>#include<malloc.h>
#include<stdlib.h>
typedef struct student
{
char name[10];
int number;
int chinese;
int math;
int english;
};
typedef struct node
{
int data;
struct student a;
struct node *next;
}node,*linklist;
void createlist(linklist *l)/*创建单链表*/
{
*l=(linklist)malloc(sizeof(node));/*申请内存*/
(*l)->next=NULL;/*建立空的单链表*/
(*l)->data=0;/*初始化数据区*/
}
void charu(linklist *l,int n)/*插入学生信息*/
{
int i;
linklist p,s;
if(n<0||n>(*l)->data+1)
{
printf("超出范围,插入位置不合法\n");
return ;
}
if((s=(linklist)malloc(sizeof(node)))==NULL)
{
printf("未分配到内存!");
return ;
}
p=(*l);
for(i=1;i<n;i++)
printf("请输入学生的姓名:");
scanf("%s",&(s->a.name));
printf("请输入学生的学号:");
scanf("%d",&(s->a.number));
printf("请输入学生的语文成绩:");
scanf("%d",&(s->a.chinese));
printf("请输入学生的数学成绩:");
scanf("%d",&(s->a.math));
printf("请输入学生的英语成绩:");
scanf("%d",&(s->a.english));
p=p->next;
s->next=p->next;
p->next=s;
(*l)->data++;
}
void delet(linklist l) /*学生信息的删除*/
{
linklist p,q;
int n,i;
p=l;
printf("输入删除位置:");
scanf("%d",&n);
if(n<0||n>l->data)
{
printf("删除结点的位置不合法!\n");
return ;
}
for(i=1;i<n;i++)
p=p->next;
q=p->next;
p->next=q->next; /*修改指针,删除节点q*/
free(q); /*释放被删除的结点所占的内存空间*/
l->data--;
}
void display(linklist l)
{
linklist p;
p=l->next;
while(p!=NULL)
{
printf("学生的姓名是: %s\n",p->a.name);
printf("学生的学号是: %d\n",p->a.number);
printf("学的语文成绩: %d\n",p->a.chinese);
printf("学的英语成绩: %d\n",p->a.english);
printf("学的数学成绩: %d\n",p->a.math);
p=p->next;
}
}
void chaxun(linklist l)
{
int n,flag=1;
linklist p;
p=l->next;
printf("输入要查询的学号:\n");
scanf("%d",&n);
while(p!=NULL)
{
if(n==p->a.number)
{
printf("学生的姓名是:%s\n",p->a.name);
printf("学生的学号是:%d\n",p->a.number);
printf("学生的语文成绩是:%d\n",p->a.chinese);
printf("学生的数学成绩是:%d\n",p->a.math);
printf("学生的英语成绩是:%d\n",p->a.english);
flag=0;
break;
}
p=p->next;
}
if(flag)
printf("查询的学生不存在\n");
printf("是否重新修改学生信息查询?,输入1修改,输入0不修改:\n");
scanf("%d",&flag);
if(flag)
{
printf("输入学生的姓名:");
scanf("%s",&(p->a.name));
printf("输入学生的学号:");
scanf("%d",&(p->a.number));
printf("输入学的语文成绩:");
scanf("%d",&(p->a.chinese));
printf("输入学的英语成绩:");
scanf("%d",&(p->a.english));
printf("输入学的数学成绩:");
scanf("%d",&(p->a.math));
}
void menu()
{
printf(" 单链表基本操作实验 \n");
printf("******************************************************\n");
printf("请选择命令序号(0-7): *\n");
printf("*1插入学生信息; *\n");
printf("*2删除学生信息; *\n");
printf("*3查询学生信息; *\n");
printf("*4输出学生信息; *\n");
printf("*0程序结束. *\n");
printf("******************************************************\n");
}
int main(void)
{
int i,n,flag;
linklist l;
createlist(&l);
menu();
for(i=0;i<9;i++)
{
printf("输入第%d个学生的信息\n",i+1);
charu(&l,1);
}
printf("输入要执行的操作:\n");
scanf("%d",&flag);
while(flag)
{
switch(flag)
{
case 1:
printf("输入要插入的位置:\n");
scanf("%d",&n);
charu(&l,n);
break;
case 2:
delet(l);
break;
case 3:
display(l);
break;
case 4:
chaxun(l);
break;
default:
printf("输入无效:\n");
break;
}
menu();
printf("输入要执行的操作:\n");
scanf("%d",&flag);
}
free(l);
return 0;
}
Compiling...
链表操作实验报告.cpp
E:\面向对象程序设计\计算机操作系统\1链表操作实验报告\链表操作实验报告.cpp(12) : warning C4091: 'typedef ' : ignored on left of 'struct student' when no variable is declared
E:\面向对象程序设计\计算机操作系统\1链表操作实验报告\链表操作实验报告.cpp(136) : error C2601: 'menu' : local function definitions are illegal
E:\面向对象程序设计\计算机操作系统\1链表操作实验报告\链表操作实验报告.cpp(148) : error C2601: 'main' : local function definitions are illegal
E:\面向对象程序设计\计算机操作系统\1链表操作实验报告\链表操作实验报告.cpp(189) : fatal error C1004: unexpected end of file found
执行 cl.exe 时出错.
链表操作实验报告.exe - 1 error(s), 0 warning(s)
程序检查了很多遍,没有错误啊,怎么会这样提示