Про стеки на Си я напишу сейчас, а версию на Си++ напишу позжа. Итак погнали:
Код:
#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