이 코드를 스택으로 바꿔야하는데.. 

뭐뭐를 바꿔야하나요?

도와주세요


#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 * makelist(int size);

int isfull(list *p);

void append(list *p, item item1);

void destroy(list *p); 


int main (void)

{

item item1; 

list *p; 

list *q;

int p_size = 10;

int q_size = 50;

p = makelist(p_size);

q = makelist(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;

append(p, item1);

}

else // odd index 1, 3, 5,

{

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

item1.price = 4000 + i * 100;

append(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 append(list *p, item item1)

{

 if(isfull(p))

  return;

 p->current++;

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

}

void destroy(list *p)

{

  free(p->item_array);

  free(p); 

}