c语言结构体池简单实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#include

#define __STDC_WANT_LIB_EXT1__ #define LIST_SIZE 10

typedef struct student

{

int number;

char name[10];

int age;

}student;

student *list[LIST_SIZE];

void initi(void);

student *get_stu(void);

void return_stu(student **stu);

void print_info(const student *stu); void free_list();

int main(void)

{

initi();

student *Tony=get_stu();

Tony->number=1;

strcpy_s(Tony->name,10,"Tony");

Tony->age=16;

print_info(Tony);

free_list();

return 0;

}

//初始化结构体池

void initi(void)

{

for(int i=0;i

list[i]=NULL;

}

//从结构体池获取结构体

student *get_stu(void)

{

for(int i=0;i

if(list[i]!=NULL)

{

student *temp=list[i];

list[i]=NULL;

return temp;

}

student *temp=(student*)malloc(sizeof(student));

return temp;

}

//将结构体返回结构体池

void return_stu(student**stu)

{

for(int i=0;i

if(list[i]==NULL)

{

list[i]=*stu;

*stu=NULL;

return ;

}

free(*stu);

}

//打印学生信息

void print_info(const student *stu)

{

printf("Number: %10d\n",stu->number);

printf("Name: %12s\n",stu->name);

printf("Age: %13d\n",stu->age);

}

//释放结构体池内存

void free_list(void)

{

for(int i=0;i

if(list[i]!=NULL)

free(list[i]);

}

相关文档
最新文档