Я создал реализацию стека в C. Вот соответствующие определения / методы, я удалил всю проверку / перераспределение ошибок, поэтому не комментируйте это:
typedef struct {
Element *data;
int top;
int size;
} Stack;
typedef void* Element;
void push(Stack *s, Element e) {
s->data[(s->top)++] = e;
}
Теперь в другом методе у меня есть цикл, в котором я вызываю push()
. Что-то вроде
int character;
Stack *s = createStack();
while((character = getchar()) != EOF) {
int tmp = character;
push(s, &tmp);
}
Однако, это не работает так, как я хочу. Стек каждый раз получает один и тот же адрес, поэтому, когда каждый символ читается, «содержимое» всего стека изменяется. Как мне изменить это, чтобы сделать то, что я хочу. например, когда читается abcde
, стек выглядит (сверху вниз) e,d,c,b,a
.