|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct stu
{ int age; //年龄
int sno; //学号
char name[20]; //名字
struct stu *next;
}stu;
int l;
stu *head;
int main()
{ void guanli();
void xs();
char a[20];
printf("欢迎使用管理系统\n");
printf("你是管理员还是学生呢?\n");
gets(a);
while (strcmp(a,"管理员")!=0&&strcmp(a,"学生")!=0)
{ printf("输入错误,请重新输入");
gets(a);
}
printf("\n");
printf("请输入学生个数");
scanf("%d",&l);
if (strcmp(a,"管理员")==0)
guanli();
else if (strcmp(a,"学生")==0)
xs();
return 0;
}
void guanli()
{ void chuangli();// 创建一个链表
void charu();// 在指定位置插入一个节点
void shanchu();// 删除指定位置的节点
void chakan();// 打印一个链表
stu p1,p2;
char a[20];
chuangli();
printf("你想 插入 删除 查看?\n");
scanf("%s",a);
if (strcmp(a,"查看")==0)
chakan();
else if (strcmp(a,"删除")==0)
{ shanchu();
l--;
}
else if (strcmp(a,"插入")==0)
charu();
}
void chuangli()
{
stu *p,*p1;
int i;
for (i=1;i<=l;i++)
{ if (i==1)
{ p=p1=head=(stu *)malloc(sizeof(stu));
printf("请输入名字:");
scanf("%s",(*p1).name );
printf("请输入学生的年龄以及学号:");
scanf("%d %d",&(*p1).age ,&(*p1).sno);
(*p1).next=NULL;
}
else
{ p1=(stu *)malloc(sizeof(stu));
printf("请输入名字年龄以及学号:");
scanf("%s,%d,%d",(*p1).name,&(*p1).age ,&(*p1).sno);
(*p1).next=NULL;
(*p).next=p1;
p=p1;
}
}
}
void chakan()
{ stu *p;
p=head;
while (p!=NULL)
{ printf("%d %d %s\n",(*p).age ,(*p).name ,(*p).name);
p=(*p).next;
}
system("pause");
}
void shanchu()
{ stu *p,*q;
char a[20];
p=head;
printf("请输入你想删除的名字");
gets(a);
while (strcmp((*p).name,a)!=0 )
{ q=p;
p=(*p).next;
}
(*q).next=(*p).next;
free(p);
chakan();
}
void charu()
{ stu *p,*q;
char a[20];
p=head;
printf("请输入你要插入到哪位同学后面 :");
scanf("%s",a);
while(strcmp((*p).name,a)!=0)
{ p=(*p).next;
if (p==NULL)
printf("erro\n");
gets(a);
}
q=(stu *)malloc(sizeof(stu));
gets((*q).name );
scanf("%d,%d",(*q).age ,(*q).sno);
(*q).next=(*p).next;
(*p).next=q;
}
void xs()
{ stu *p;
char a[20];
p=head;
printf("请输入学生的名字查询");
scanf("%s",a);
while (strcmp((*p).name,a)!=0)
{ p=(*p).next;
if (p==NULL)
printf("输入错误,请重新输入");
xs();
}
printf("年龄:%d, 学号:%d, 名字:%s",(*p).age,(*p).sno,(*p).name);
} 删除函数以及插入函数有问题,老是内存报错 |
|