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

Объяснение кода листинга программы

  1. Объявлены три указателя:
    • p - указатель на область свободной памяти;
    • tos - указатель на вершину стека;
    • bos - указатель на дно стека.
  2. Если память под стек выделялась динамически (при помощи malloc), то в начале работы программы p должен указывать на начало свободного блока памяти, а bos и tos должны быть равны p.
  3. Если память под стек выделялась статически (при помощи compile-time alloca), то в начале работы программы p должен указывать на начало стека, а bos и tos должны быть равны p + sizeof(int) * N, где N - количество элементов стека.
  4. Метод push добавляет элемент в стек.
    • Проверяется, не полон ли стек: если p выходит за пределы выделенной памяти, то выводится сообщение Stack Full и метод возвращает управление.
    • Значение i записывается в память по указателю p и p сдвигается вперед.
  5. Метод pop извлекает верхний элемент из стека.
    • Указатель p сдвигается назад.
    • Если p становится меньше tos, то выводится сообщение Stack Underflow и метод возвращает 0.
    • Возвращается значение, хранящееся по указателю p.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5
Похожие ответы