数据结构4

#ifndef _XUESHENG_H_
#define _XUESHENG_H_
#include 
#include 	
#include 

#define max 40
typedef struct
{
	char name[20];
	char sex[10];
	int score;
}stu;
typedef struct
{
	stu s[max];
	int len;
}Class,*ClassPtr;
//创建
ClassPtr list_create();
//判满
int list_full(ClassPtr C);
//判空
int list_empty(ClassPtr C);
//添加学生
int list_add(ClassPtr C);
//遍历
int list_show(ClassPtr C);
//任意位置插入
int list_charu_pos(ClassPtr C);
//任意位置删除
int list_del_pos(ClassPtr C);
//按位修改
int list_xiugai_pos(ClassPtr C);
//查找指定位置
int list_name_find(ClassPtr C);
//释放
void list_free(ClassPtr C);

#endif
#include "xuesheng.h"
ClassPtr list_create()
{
	ClassPtr C=(ClassPtr)malloc(sizeof(Class));
	if(NULL==C)
	{
		printf("顺序表创建失败\n");
		return NULL;
	}
	printf("顺序表创建成功\n");
	return C;
}
//判满
int list_full(ClassPtr C)
{
	if(NULL==C)
	{
		printf("顺序表不合法\n");
		return 0;
	}
	return C->len==max;
}
//判空
int list_empty(ClassPtr C)
{
	if(NULL==C)
	{
		printf("顺序表不合法\n");
		return 0;
	}
	return C->len==0;
}
//添加
int list_add(ClassPtr C)
{
	if(NULL==C)
	{
		printf("顺序表不合法\n");
		return 0;
	}
	printf("输入学生信息\n");
	scanf("%s %s %d",\
			C->s[C->len].name,\
			C->s[C->len].sex,\
			&C->s[C->len].score);
	C->len++;
	printf("添加成功\n");
	return 1;
}
//遍历
int list_show(ClassPtr C)
{
	if(NULL==C)
	{
		printf("顺序表不合法\n");
		return 0;
	}
	for(int i=0;ilen;i++)
	{
		printf("%s\t%s\t%d\n",\
				C->s[i].name,\
				C->s[i].sex,\
				C->s[i].score);
	}
	return 1;
}
//插入
int list_charu_pos(ClassPtr C)
{
	if(NULL==C)
	{
		printf("顺序表不合法\n");
		return 0;
	}
	int j;
	printf("要插入的位置\n");
	scanf("%d",&j);
	for(int i=C->len-1;i>j-1;i--)
	{
		C->s[C->len]=C->s[C->len-1];
	}
	printf("输入插入的信息\n");
	scanf("%s %s %d",C->s[j-1].name,\
			C->s[j-1].sex,\
			&C->s[j-1].score);
	C->len++;
	printf("插入成功\n");
	return 1;
}
//删除
int list_del_pos(ClassPtr C)
{
	int j;
	printf("请输入要删除的位置\n");
	scanf("%d",&j);
	for(int i=j;ilen;i++)
	{
		C->s[i-1]=C->s[i];
	}
	C->len--;
	printf("删除成功\n");
}
//按位修改
int list_xiugai_pos(ClassPtr C)
{
	int j;
	scanf("%d",&j);
	printf("输入要修改的信息\n");
	scanf("%s %s %d",\
			C->s[j-1].name,\
			C->s[j-1].sex,\
			&C->s[j-1].score);
	printf("修改成功\n");
	return 1;
}
//查找指定位置
int list_name_find(ClassPtr C)
{
	char j[10];
	printf("要查找的名字\n");
	scanf("%s",j);
	for(int i=0;ilen;i++)
	{
		if(strcmp(C->s[i].name,j)==0)
		{
			printf("找到了\n");
			printf("%s\t%s\t%d\n",\
			C->s[i].name,\
			C->s[i].sex,\
			C->s[i].score);
		}
	}
	return 1;
}
//释放
void list_free(ClassPtr C)
{
	if(NULL!=C)
	{
		free(C);
		C=NULL;
	}
}
#include"xuesheng.h"

int main()
{
	ClassPtr C=list_create();
	if(NULL==C)
	{
		return -1;
	}
	while(1)
	{

		char ret;
		printf("a|A:添加学员信息\n");
		printf("b|B:遍历\n");
		printf("c|C:任意位置插入学员信息\n");
		printf("d|D:任意位置删除学员信息\n");
		printf("e|E:任意位置修改学员信息\n");
		printf("f|F:按名字查找\n");
		printf("q|Q:释放空间并退出\n");
		printf("请输入执行选项:");
		scanf(" %c",&ret);
		switch(ret)
		{
			case 'a'|'A':
			//调用添加函数
			list_add(C);
			break;

			case 'b'|'B':
			//调用遍历函数
			list_show(C);
			break;

			case 'c'|'C':
			//任意位置插入学员信息
			list_charu_pos(C);
			break;

			case 'd'|'D':
			//按位置删除学员信息
			list_del_pos(C);
			break;

			case 'e'|'E':
			//按任意位置修改学员信息
			list_xiugai_pos(C);
			break;

			case 'f'|'F':
			//按名字查找
			list_name_find(C);
			break;
			case 'q'|'Q':
			//添加释放函数
			list_free(C);
			break;
			case 0:
			return 0;
		}

	}
	return 0;
}

你可能感兴趣的:(数据结构)