지금 배열을 스택으로 바꾸고있는데 append를 push로바꾸고 destroy를 pop으로 바꿨는데 그다음 어찌해야할지 모르겠어ㅠ

도와줘..ㅠㅠ


#include <stdio.h>

#include <malloc.h>


typedef struct _item

{

char * name;

unsigned int price;

}item;

typedef struct _list

{

item * item_array;

int current;

int size;

}list;


list * makestack(int size);

int isfull(list *p);

void push(list *p, item item1);

void pop(list *p); 


int main (void)

{

item item1; 

list *p; 

list *q;

int p_size = 10;

int q_size = 50;

p = makestack(p_size);

q = makestack(q_size);


for (int i = 0; i < p_size; i ++)

{

if ( i % 2)

{

item1.name = "banana"; // even index: 0, 2, 4, ...

item1.price = 2000 + i * 100;

push(p, item1);

}

else // odd index 1, 3, 5,

{

item1.name = "apple"; // even index: 0, 2, 4,

item1.price = 4000 + i * 100;

pop(p, item1);


}

}

for (int i = 0; i < p_size; i ++)

{

printf("p->item_array[%d].name is %s \n", i, p->item_array[i].name);

printf("p->item_array[%d].price is %d \n", i, p->item_array[i].price);

}


 

destroy(p);

destroy(q);

getchar();

}



list * makelist(int size)

{

list *p;

p = (list *) malloc(sizeof(list) * 1);

p->item_array = (item *) malloc(sizeof(item) * size);

p->current = -1;

p->size = size;

return p;

}

int isfull(list *p)

{

 if(p->current == (p->size) -1)

  return 1;

 else

return 0;

}

void push(list *p, item item1)

{

 if(isfull(p))

  return;

 p->current++;

 p->item_array[p->current] = item1;

}

void pop(list *p)

{

  free(p->item_array);

  free(p); 

}