#include #include #include #ifndef B #define B 2 #endif #define N 20 typedef struct{char l[N];char f[N];}n;typedef struct{int i;n n;int s;}r;typedef struct{r**d;size_t a;size_t u;}rl; void lt(rl*l){size_t i=0;l->d=malloc(B*sizeof(r*));l->a=B;l->u=0;for(i=0;id[i]=NULL;}} void ld(rl*l){size_t i=0;for(i=0;id[i]);}free(l);} int li(rl*l,const r*c){if(l->u>=l->a){size_t i=0;l->d=realloc(l->d,sizeof(r*)*(l->a+B)); if(l->d==NULL){return 0;}for(i=l->a;i<(l->a+B);i++){l->d[i]=NULL;}l->a+=B;} l->d[l->u]=malloc(sizeof(r));if(l->d[l->u]==NULL){return 0;} l->d[l->u]->i=c->i;l->d[l->u]->n=c->n;l->d[l->u]->s=c->s;l->u++;return 1;} int main(void){ rl list; r david, ryan; lt(&list); david.i = 812683; ryan.i = 123456; david.s = 100; ryan.s = 100; strcpy(david.n.f, "david"); strcpy(david.n.l, "etc"); strcpy(ryan.n.f, "ryan"); strcpy(ryan.n.l, "etc"); li(&list, &david); li(&list, &ryan); li(&list, &ryan); printf("first record name: %s\n",list.d[0]->n.l); printf("Second record name: %s\n",list.d[1]->n.l); printf("Third record name: %s\n",list.d[2]->n.l); }