|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
int y=0;
typedef struct student
{
char name[20];
char number[20];
int score;
struct student *next;
}STU;
/*int lenth(STU **head)
{
int k=0;
STU *stu1;
stu1=*head;
while(stu1!=NULL)
{
stu1=stu1->next;
k++;
}
printf("%d",k);
return k;
}*/
void insert(STU *head)
{
STU *stu1,*s;
stu1=head;
int i,k;
s=(STU *)malloc(sizeof(STU));
printf("请问你要在哪里插入?");
scanf("%d",&i);
if(i>y||i<=0)
{
printf("插入位置出错!");
}
else
{
printf("请输入姓名");
scanf("%s",s->name);
printf("请输入学号");
scanf("%s",s->number);
printf("请输入分数");
scanf("%d",&s->score);
if(i==1)
{
s->next=stu1;
s=head;
printf("插入完成");
}
else{
for(k=1;k!=i;k++)
{
stu1=stu1->next;
}
s->next=stu1->next;
stu1->next=s;
y++;
printf("插入完成!");
}
}
}
void remove(STU *head)
{
STU *stu,*r,*e;
stu=head;
int i,k;
printf("你要删除哪一个?(输入他的位置)");
scanf("%d",&i);
if(i<=0||i>y)
{
printf("删除位置有错!");
}
else
{
for(k=1;stu->next!=NULL&&k!=i;k++)
{
stu=stu->next;
}
r=stu->next;
stu->next=r->next;
e=r;
free(e);
y--;
}
}
void seek(STU *head)
{
char number1[20];
printf("请输入你要查找的学号:");
scanf("%s",number1);
STU *stu;;
stu=head;
while(stu!=NULL)
{
if(strcmp(stu->number,number1)!=0)
{
stu=stu->next;
}
else
{
printf("你要查找的人的姓名是%s\n",stu->name);
printf("这个人的学号是%s\n",stu->number);
printf("这个人的成绩是%d\n",stu->score);
break;
}
}
}
void getInput(STU *stu)
{
printf("请输入姓名");
scanf("%s",stu->name);
printf("请输入学号");
scanf("%s",stu->number);
printf("请输入分数");
scanf("%d",&stu->score);
y++;
}
void add(STU **head)
{
STU *stu,*temp;
stu=(STU *)(malloc(sizeof(STU)));
if(stu==NULL)
{
printf("失败!");
exit(1);
}
getInput(stu);
if(*head!=NULL)
{
temp=*head;
*head=stu;
stu->next=temp;
}
else
{
*head=stu;
stu=stu->next;
}
}
void print(STU *head)
{
STU *stu;
stu=head;
while(stu!=NULL)
{
printf("姓名:%s\n",stu->name);
printf("学号:%s\n",stu->number);
printf("分数:%d\n",stu->score);
stu=stu->next;
}
}
void quit(STU *head)
{
STU *stu,*temp;
stu=head;
while(stu!=NULL)
{
temp=stu;
stu=stu->next;
free(temp);
}
}
int main()
{
int i=0;
STU *head;
while(i<16)
{
printf("*");
printf("-");
i++;
}
printf("我有以下操作!\n");
printf("\t输入一个学生的信息(1)\t");
printf("插入某一学生的信息(2)\n");
printf("\t删除某一学生的信息(3)\t");
printf("查找某个学生的信息(按学号)(4)\n");
printf("\t打印(5)\t");
printf("退出(6)\n");
while(i!=6)
{
printf("你要进行什么操作?");
scanf("%d",&i);
switch(i)
{
case 1:add(&head);break;
case 2:insert(head);break;
case 3:remove(head);break;
case 4:seek(head);break;
case 5:print(head);break;
case 6:quit(head);break;
}
}
return 0;
}
//说实话,感觉我这个一大堆的错啊,但是还是可以运行的,比如,插入功能,我先输入了两个学生的信息,当我再插入一个学生信息的时候,我选择插入位置再第一个位置,就会插入失败(就是没有插入进去),但是我选择插入在第二个位置的时候又插入进去的,这个程序给我的感觉就是,我让他插入,删除,某些位置,它会找不到,我给它的位置。大佬,求救! |
|