顺序表
list.c
#include"list.h"
Plist apply_area()
{
Plist p=malloc(sizeof(List));
if(p==NULL)
{
printf("空间申请失败\n");
return NULL;
}
p->len=0;
memset(p->data,0,sizeof(p->data));
return p;
}
int int_put(Plist L,int n)
{
for(int i=0;i<n;i++)
{
printf("请输入第%d个学生信息\n",i+1);
printf("请输入学生姓名\n");
scanf("%s",L->data[i].name);
printf("请输入学生年龄\n");
scanf("%d",&L->data[i].age);
printf("请输入学生成绩\n");
scanf("%d",&L->data[i].score);
printf("请输入学生电话\n");
scanf("%d",&L->data[i].photo);
L->len++;
}
}
int out_put(Plist L)
{
for(int i=0;i<L->len;i++)
{
printf("%s: 年龄:%d 成绩:%d 电话:%d\n",L->data[i].name,L->data[i].age,L->data[i].score,L->data[i].photo);
}
return 0;
}
void intset(Plist L)
{
printf("请输入要插入的位置\n");
int n=0;
scanf("%d",&n);
if(n<1||n>L->len||L->len==MAX||L==NULL)
{
printf("插入失败\n");
}
else
{
for(int i=L->len-1;i>=n-1;i--)
{
L->data[i+1]=L->data[i];
}
printf("请输入学生姓名\n");
scanf("%s",L->data[n-1].name);
printf("请输入学生年龄\n");
scanf("%d",&L->data[n-1].age);
printf("请输入学生成绩\n");
scanf("%d",&L->data[n-1].score);
printf("请输入学生电话\n");
scanf("%d",&L->data[n-1].photo);
L->len++;
}
}
void dele_L(Plist L)
{
printf("请输入要删除的位置\n");
int n=0;
scanf("%d",&n);
for(int i=n-1;i<L->len;i++)
{
L->data[i]=L->data[i+1];
}
L->len--;
}
void change_L(Plist L)
{
printf("请输入要修改的学生位置\n");
int n=0;
scanf("%d",&n);
printf("请输入学生姓名\n");
scanf("%s",L->data[n-1].name);
printf("请输入学生年龄\n");
scanf("%d",&L->data[n-1].age);
printf("请输入学生成绩\n");
scanf("%d",&L->data[n-1].score);
printf("请输入学生电话\n");
scanf("%d",&L->data[n-1].photo);
}
void find_name(Plist L)
{
printf("请输入要查找的学生姓名\n");
char s[20]="";
int x=0;
scanf("%s",s);
for(int i=0;i<L->len;i++)
{
if(strcmp(L->data[i].name,s)==0)
{
printf("%s: 年龄:%d 成绩:%d 电话:%d\n",L->data[i].name,L->data[i].age,L->data[i].score,L->data[i].photo);
x++;
}
}
if(x==0)
{
printf("查找失败\n");
}
}
void paixu(Plist L)
{
for(int i=0;i<L->len;i++)
{
int max=0;
int maxi=0;
for(int j=0;j<L->len-i;j++)
{
if(L->data[j].age>max)
{
max=L->data[j].age;
maxi=j;
}
}
students temp=L->data[L->len-i-1];
L->data[L->len-i-1]=L->data[maxi];
L->data[maxi]=temp;
}
}
list.h
#ifndef _LIST_H_
#define _LIST_H_
#include<myhead.h>
#define MAX 30
typedef struct
{
char name[20];
int age;
int score;
int photo;
}students;
typedef struct
{
students data[MAX];
int len;
}List,*Plist;
Plist apply_area();
int int_put(Plist L,int n);
int out_put(Plist L);
void intset(Plist L);
void dele_L(Plist L);
void change_L(Plist L);
void find_name(Plist L);
void paixu(Plist L);
#endif
mymain
#include"list.h"
int main()
{
Plist L=apply_area();
while(1)
{
printf("1,输入学生信息\n");
printf("2,输出\n");
printf("3,插入\n");
printf("4,删除\n");
printf("5,修改\n");
printf("6,查找\n");
printf("7,排序\n");
printf("0,退出\n");
printf("请输入你要执行的操作\n");
int n=0;
scanf("%d",&n);
switch(n)
{
case 1:
{
int x=0;
printf("请输入你要输入的学生个数\n");
scanf("%d",&x);
int_put(L,x);
}
break;
case 2:out_put(L);
break;
case 3:intset(L);
break;
case 4:dele_L(L);
break;
case 5:change_L(L);
break;
case 6:find_name(L);
break;
case 7:paixu(L);
break;
case 0:return 0;
break;
default:printf("指令错误\n");
}
}
return 0;
}
单链表
list.c
#include"list.h"
Plist apply_area()
{
Plist p=malloc(sizeof(List));
if(p==NULL)
{
printf("空间申请失败\n");
return NULL;
}
p->len=0;
p->next=NULL;
return p;
}
int int_put(Plist L,int n)
{
for(int i=0;i<n;i++)
{
Plist p=malloc(sizeof(List));
printf("请输入第%d个学生信息\n",i+1);
printf("请输入学生姓名\n");
scanf("%s",p->data.name);
printf("请输入学生年龄\n");
scanf("%d",&p->data.age);
printf("请输入学生成绩\n");
scanf("%d",&p->data.score);
printf("请输入学生电话\n");
scanf("%d",&p->data.photo);
p->next=L->next;
L->next=p;
L->len++;
}
}
int out_put(Plist L)
{
Plist p=L;
for(int i=0;i<L->len;i++)
{
p=p->next;
printf("%s: 年龄:%d 成绩:%d 电话:%d\n",p->data.name,p->data.age,p->data.score,p->data.photo);
}
return 0;
}
void dele_L(Plist L)
{
printf("请输入要删除的位置\n");
int n=0;
scanf("%d",&n);
Plist p=L;
for(int i=0;i<n-1;i++)
{
p=p->next;
}
Plist x=p->next;
p->next=p->next->next;
L->len--;
free(x);
x=NULL;
}
void change_L(Plist L)
{
printf("请输入要修改的学生位置\n");
int n=0;
scanf("%d",&n);
Plist p=L;
for (int i = 0; i < n; i++)
{
p=p->next;
}
printf("请输入学生姓名\n");
scanf("%s",p->data.name);
printf("请输入学生年龄\n");
scanf("%d",&p->data.age);
printf("请输入学生成绩\n");
scanf("%d",&p->data.score);
printf("请输入学生电话\n");
scanf("%d",&p->data.photo);
}
void find_name(Plist L)
{
printf("请输入要查找的学生姓名\n");
char s[20]="";
int x=0;
scanf("%s",s);
Plist p=L;
for(int i=0;i<L->len;i++)
{
p=p->next;
if(strcmp(p->data.name,s)==0)
{
printf("%s: 年龄:%d 成绩:%d 电话:%d\n",p->data.name,p->data.age,p->data.score,p->data.photo);
x++;
}
}
if(x==0)
{
printf("查找失败\n");
}
}
list.h
#ifndef _LIST_H_
#define _LIST_H_
#include<myhead.h>
typedef struct
{
char name[20];
int age;
int score;
int photo;
}students;
typedef struct node
{
union
{
students data;
int len;
};
struct node *next;
}List,*Plist;
Plist apply_area();
int int_put(Plist L,int n);
int out_put(Plist L);
void dele_L(Plist L);
void change_L(Plist L);
void find_name(Plist L);
#endif
mymain.c
#include"list.h"
int main()
{
Plist L=apply_area();
while(1)
{
printf("1,输入学生信息\n");
printf("2,输出\n");
printf("3,删除\n");
printf("4,修改\n");
printf("5,查找\n");
printf("0,退出\n");
printf("请输入你要执行的操作\n");
int n=0;
scanf("%d",&n);
switch(n)
{
case 1:
{
int x=0;
printf("请输入你要输入的学生个数\n");
scanf("%d",&x);
int_put(L,x);
}
break;
case 2:out_put(L);
break;
case 3:dele_L(L);
break;
case 4:change_L(L);
break;
case 5:find_name(L);
break;
case 0:return 0;
break;
default:printf("指令错误\n");
}
}
return 0;
}