数据结构学习day1

自定义顺序表,实现顺序表按照位置插入和删除功能

主函数

#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

学生信息输出完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值