Создайте структуру данных "стек", реализовав все указанные здесь методы - C (СИ)
Формулировка задачи:
Создайте структуру данных "стек", реализовав все указанные здесь методы. Напишите программу, содержащую описание стека и моделирующую работу стека. Программа считывает последовательность команд и в зависимости от команды выполняет ту или иную операцию. После выполнения одной команды программа должна вывести одну строчку. Возможные команды для программы:
push n
Добавить в стек число n (значение n задается после команды). Программа должна вывес-ти ok.
pop
Удалить из стека последний элемент. Программа должна вывести его значение.
back
Программа должна вывести значение последнего элемента, не удаляя его из стека.
size
Программа должна вывести количество элементов в стеке.
clear
Программа должна очистить стек и вывести ok.
exit
Программа должна вывести bye и завершить работу.
Добавлено через 43 секунды
ПОМОГИТЕ ПОЖАЛСТА !!!
Решение задачи: «Создайте структуру данных "стек", реализовав все указанные здесь методы»
textual
Листинг программы
int *p; /* указатель на область свободной памяти */ int *tos; /* указатель на вершину стека */ int *bos; /* указатель на дно стека */ /* занесение элемента в стек */ void push(int i) { if(p > bos) { printf("Stack Full\n"); return; } *p = i; p++; } /* получение верхнего элемента из стека*/ int pop(void) { p--; if(p < tos) { printf("Stack Underflow\n"); return 0; } return *p; }
Объяснение кода листинга программы
- Объявлены три указателя:
p
- указатель на область свободной памяти;tos
- указатель на вершину стека;bos
- указатель на дно стека.
- Если память под стек выделялась динамически (при помощи malloc), то в начале работы программы
p
должен указывать на начало свободного блока памяти, аbos
иtos
должны быть равныp
. - Если память под стек выделялась статически (при помощи compile-time alloca), то в начале работы программы
p
должен указывать на начало стека, аbos
иtos
должны быть равныp + sizeof(int) * N
, где N - количество элементов стека. - Метод
push
добавляет элемент в стек.- Проверяется, не полон ли стек: если
p
выходит за пределы выделенной памяти, то выводится сообщениеStack Full
и метод возвращает управление. - Значение
i
записывается в память по указателюp
иp
сдвигается вперед.
- Проверяется, не полон ли стек: если
- Метод
pop
извлекает верхний элемент из стека.- Указатель
p
сдвигается назад. - Если
p
становится меньшеtos
, то выводится сообщениеStack Underflow
и метод возвращает 0. - Возвращается значение, хранящееся по указателю
p
.
- Указатель
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д