LIST.C
#include"list.h"
Ptack insert_head()
{
Ptack p=malloc(sizeof(Tack));
if(p==NULL)
{
printf("新建失败\n");
return NULL;
}
p->len=0;
p->next=NULL;
return p;
}
int insert_student(Ptack L)
{
for(int i=0;i<3;i++)
{
Ptack p=malloc(sizeof(Tack));
if(p==NULL)
{
printf("新建失败\n");
return 0;
}
printf("请依次输入学生姓名、分数、年龄、手机号\n");
scanf("%s%f%d%s",p->data.name,&p->data.score,&p->data.age,p->data.phone_number);
p->next=L->next;
L->next=p;
L->len++;
}
return 0;
}
int output(Ptack L)
{
Ptack t=L->next;
while(t!=NULL)
// for(int i=0;i<L->len;i++)
{
printf("姓名:%s 分数:%.2f 年龄:%d 手机号:%s\n",t->data.name,t->data.score,t->data.age,t->data.phone_number);
t=t->next;
}
return 0;
}
int delete_stu(Ptack L)
{
printf("请输入删除学生的位置>>>>>");
int pos;
scanf("%d",&pos);
Ptack t=L;
for(int i=0;i<pos-1;i++)
{
t=t->next;
}
Ptack Q=t->next;
t->next=Q->next;
L->len--;
free(Q);
Q=NULL;
return 0;
}
int amend_stu(Ptack L)
{
printf("请输入查找的成绩>>>>>");
int a;
scanf("%d",&a);
int flaw=0;
Ptack t=L->next;
for(int i=0;i<L->len;i++)
{
if(t->data.score==a)
{
printf("请输入需要修改的年龄>>>>>");
int b;
scanf("%d",&b);
t->data.age=b;
flaw=1;
}
t=t->next;
}
if(flaw==0)
{
printf("查无此成绩\n");
}
return 0;
}
int search_name(Ptack L)
{
char a[20];
Ptack t=L->next;
printf("请输入查找人姓名>>>>>");
scanf("%s",a);
int flaw=0;
while(t!=NULL)
{
if(strcmp(t->data.name,a)==0)
{
printf("姓名:%s 分数:%.2f 年龄:%d 手机号:%s\n",t->data.name,t->data.score,t->data.age,t->data.phone_number);
flaw=1;
}
t=t->next;
}
if(flaw==0)
{
printf("该学生不存在");
}
return 0;
}
LIST.H
#ifndef _LIST_H_
#define _LIST_H_
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct
{
char name[20];
float score;
int age;
char phone_number[20];
}stu;
typedef struct node
{
union
{
int len;
stu data;
};
struct node *next;
}Tack,*Ptack;
Ptack insert_head();
int insert_student(Ptack L);
int output(Ptack L);
int delete_stu(Ptack L);
int amend_stu(Ptack L);
int search_name(Ptack L);
#endif
mymain.c
int main(int argc, const char *argv[])
{
int c;
Ptack L=NULL;
while(1)
{
printf("1、创建顺序表\n");
printf("2、录入学生信息\n");
printf("3、删除学生信息\n");
printf("4、修改学生信息\n");
printf("5、查找学生信息\n");
printf("请输入操作序号>>>>>");
scanf("%d",&c);
switch(c)
{
case 1:printf("~~~~~~~~~~~~~~~~~~~\n");
L=malloc(sizeof(Tack));
L=insert_head();
break;
case 2:printf("~~~~~~~~~~~~~~~~~~~\n");
insert_student(L);
output(L);
break;
case 3:printf("~~~~~~~~~~~~~~~~~~~\n");
delete_stu(L);
output(L);
break;
case 4:printf("~~~~~~~~~~~~~~~~~~~\n");
amend_stu(L);
output(L);
break;
case 5:printf("~~~~~~~~~~~~~~~~~~~\n");
search_name(L);
break;
default:printf("输入错误\n");
}
}
}