Создайте структуру данных "стек", реализовав все указанные здесь методы - 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.
- Указатель