自定义顺序表,实现顺序表按照位置插入和删除功能
主函数
#include "list.h"
int main(int argc,const char*argv[])
{
poi p=apply_area();//申请空间
int n;
scanf("%d",&n);
input_p(p,n);//输入学生信息
output_p(p);//输出学生信息
dele_p(p);//删除学生信息
output_p(p);
insert_p(p);//插入学生信息
output_p(p);
myfree_p(p);//释放空间
return 0;
}
list.c文件
#include "list.h"
poi apply_area()//申请数据空间
{
poi p=malloc(sizeof(tt));
if(p==NULL)
{
perror("malloc falite\n");
}
else
{
p->len=0;
memset(p->data,0,sizeof(p->data));
}
return p;
}
void input_p(poi p,int n)//输入函数
{
printf("请输入学生的信息\n");
int i;
for(i=0;i<n;i++)
{
printf("请输入学生姓名:");
scanf("%s",p->data[i].name);
printf("请输入学生年龄:");
scanf("%d",&p->data[i].age);
printf("请输入学生成绩:");
scanf("%d",&p->data[i].score);
printf("\n");
p->len++;
}
}
void output_p(poi p)输出函数
{
int i;
printf("学生信息情况如下:\n");
for(i=0;i<p->len;i++)
{
printf("姓名:%s\t年龄:%d\t成绩:%d\t编号%d\n",
p->data[i].name,p->data[i].age,
p->data[i].score,i);
}
printf("\n学生信息输出完成\n");
printf("\n");
}
void dele_p(poi p)删除学生信息
{
int a,i;
printf("请选择要删除学生的序号");
scanf("%d",&a);
if(a>=0 && a<5)
{
for(i=a;i<=p->len;i++)
{
p->data[i]=p->data[i+1];
}
p->len--;
}
else
{
printf("没有次编号,删除失败\n");
}
printf("\n");
}
void insert_p(poi p)插入学生信息
{
int a,i;
stu b={"明明",20,66};
printf("请选择要插入的学生编号:");
scanf("%d",&a);
if(a>=0 && a<=p->len)
{
for(i=p->len;i>=a;i--)
{
p->data[i+1]=p->data[i];
}
p->data[a]=b;
p->len++;
}
else
{
printf("插入失败\n");
}
printf("\n");
}
void myfree_p(poi p)
{
free(p);
p==NULL;
}
list.h文件
#include <myhead.h>//头文件集合
#define MAX 30
typedef struct stu
{
char name[20];
int age;
int score;
}stu;
typedef struct tt
{
stu data[MAX];
int len;
}tt,*poi;
poi apply_area();
void input_p(poi p,int n);
void output_p(poi p);
void dele_p(poi p);
void insert_p(poi p);
void myfree_p(poi p);
输出结果
4//学生数量
请输入学生的信息
请输入学生姓名:1
请输入学生年龄:1
请输入学生成绩:1
请输入学生姓名:2
请输入学生年龄:2
请输入学生成绩:2
请输入学生姓名:3
请输入学生年龄:3
请输入学生成绩:3
请输入学生姓名:4
请输入学生年龄:4
请输入学生成绩:4
学生信息情况如下:
姓名:1 年龄:1 成绩:1 编号0
姓名:2 年龄:2 成绩:2 编号1
姓名:3 年龄:3 成绩:3 编号2
姓名:4 年龄:4 成绩:4 编号3
学生信息输出完成
请选择要删除学生的序号2
学生信息情况如下:
姓名:1 年龄:1 成绩:1 编号0
姓名:2 年龄:2 成绩:2 编号1
姓名:4 年龄:4 成绩:4 编号2
学生信息输出完成
请选择要插入的学生编号:1
学生信息情况如下:
姓名:1 年龄:1 成绩:1 编号0
姓名:明明 年龄:20 成绩:66 编号1
姓名:2 年龄:2 成绩:2 编号2
姓名:4 年龄:4 成绩:4 编号3
学生信息输出完成