数据结构-day2

1、按要求定义类型并封装函数

#include 
#include 
#include 
//定义最大人数MAX
#define MAX 40
//定义另一变量类型
union Ling
{
	int score;
	char lesson[20];
};

//定义学员类型
struct People
{
	char name[20];
	char sex;
	char job;
	union Ling l1;
};

//定义班级类型
struct Class
{
	struct People p[MAX];
	int num ;
};

//申请一个班级并初始化
struct Class *getClass()
{
	//在堆区申请一个班级
	struct Class *C = (struct Class *)malloc(sizeof(struct Class));
	if(NULL==C)
	{
		printf("班级空间申请失败\n");
		return NULL;
	}else{
		printf("班级空间申请成功\n");
		C->num = 0;
	}
}
//添加学员函数
void Add_student(struct Class *C,int num)
{
	if(MAX>C->num)
	{
		for(int i=num; ip[MAX].job)
			{
				printf("输入要添加的学员的信息:\n");
				printf("%s\t%c\t%s\t%d\n",C->p[i+1].name,C->p[i+1].sex,C->p[i+1].job,C->p[i+1].l1.score);
			}else if("teacher" == C->p[MAX].job)
			{
				printf("输入要添加的学员的信息:\n");
				printf("%s\t%c\t%s\t%s\n",C->p[i+1].name,C->p[i+1].sex,C->p[i+1].job,C->p[i+1].l1.lesson);
			}
		}
	}
}
//定义输出函数,输出学员信息
void output(struct Class *C, int num)
{
	//判断传过来的指针是否合法
	if(NULL == C)
	{
		printf("学员信息不合法\n");
		return;
	}	
	for(int i=0; inum; i++)
	{
		if("student" == C->p[MAX].job)
		{
			printf("成员信息:\n");
			printf("姓名\t性别\t职业\n");
			printf("%s\t%c\t%s\t%d\n",C->p[i].name,C->p[i].sex,C->p[i].job,C->p[i].l1.score);
		}else if("teacher" == C->p[MAX].job)
		{
			printf("成员信息:\n");
			printf("姓名\t性别\t职业\n");
			printf("%s\t%c\t%s\t%s\n",C->p[i].name,C->p[i].sex,C->p[i].job,C->p[i].l1.lesson);
		}
	}
}

//查找成员
void find(struct Class *C)
{
	char name;
	printf("输入查找的成员姓名:");
	scanf("%s",name);
	for(int i=0; inum; i++)
	{
		if(C->p[i].name == name)
		{
			printf("班级有%d这个成员\n",name);
		}else{
			printf("班级查无此人\n");
		}
	}
}
//释放空间函数
void freeClass(struct Class *C)
{
	if(NULL != C)
	{
		free(C);
		C = NULL;
	}
}

int main(int argc, const char *argv[])
{
	//申请班级
	struct Class *C = getClass(36);

	//添加班级成员
	Add_student(C,36);

	//输出成员信息
	output(C,36);

	//查找成员
	find(C);

	//释放空间
	freeClass(C);
	C = NULL;
	return 0;
}

2、思维导图

 

你可能感兴趣的:(作业,数据结构,c语言)