이 코드를 스택으로 바꿔야하는데..
뭐뭐를 바꿔야하나요?
도와주세요
#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);
}
고칠거 없이 item *pop(list *)하나 추가하면 되겠네
어디다 추가해야하나요?
append가 push니까 pop함수만 하나 더 만들면 된다고 글고 다시 보니 리턴타입은 item *가 아니고 item
그거말고는 다 똑같나요??ㅠㅠ 감사합니다