Про стеки на Си я напишу сейчас, а версию на Си++ напишу позжа. Итак погнали:
Код:
#include <stdio.h>
#define STACK_SIZE 5 // Максимальный размер стека
int stack[STACK_SIZE]; // Инициализация массив, размер массива берётся из константы STACK_SIZE, в данном пример STACK_SIZE=5
int stack_index = STACK_SIZE; // Текущая позиция стека последняя
// Добавляет в массив значение
void push(int value) {
// Если stack_index больше 0, то:
if(stack_index > 0) {
stack[stack_index] = value; // Сохраняем значение
stack_index -- ; // Отнимаем stack_index
}
}
// Вытаскивает значение из массива
int pop() {
// Если stack_index ещё меньше STACK_SIZE, ну в нашем случае меньше 5, то:
if(stack_index < STACK_SIZE) {
stack_index++; // увеличиваем stack_index
return stack[stack_index]; // Возвращаем значение массива stack
}
}
// Главная процедура
int main(int argc, char **argv) {
push(5); // Добавляет 5 в стек, stack_index = 4
push(7); // Добавляет 7 в стек, stack_index = 3
printf("\n%d", pop()); // Вытаскивает 7, stack_index = 3
printf("\n%d", pop()); // Вытаскивает 5, stack_index = 4
push(3); // Добавляет 3 в стек, stack_index = 4
printf("\n%d", pop()); // Вытаскиеват 3, stack_index = 4
return 0;
}
Результат:
Код:
7 5 3