Определить функции initialize, push, top, pop и list-stack, поддерживающие глобальный стек - Lisp

Узнай цену своей работы

Формулировка задачи:

Определить функции initialize, push, top, pop и list-stack, поддерживающие глобальный стек. Они должны вести себя следующим образом:
Листинг программы
  1. > (initialize)
  2. nil
  3. > (push 'foo)
  4. foo
  5. > (push 'bar)
  6. bar
  7. > (top)
  8. bar
  9. > (list-stack)
  10. (bar foo)
  11. > (pop)
  12. bar
  13. > (list-stack)
  14. (foo)

Решение задачи: «Определить функции initialize, push, top, pop и list-stack, поддерживающие глобальный стек»

textual
Листинг программы
  1. (defun init-stack nil (setq *stack* nil))
  2.  
  3. (defun push (n) (setq *stack* (cons n *stack*)) n)
  4.  
  5. (defun top nil (car *stack*))
  6.  
  7. (defun pop nil
  8.   (let ((r (car *stack*)))
  9.     (setq *stack* (cdr *stack*)) r))
  10.  
  11. (defun list-stack nil *stack*)
  12.  
  13. ;; Проверка
  14.  
  15. (init-stack)
  16.  
  17. ==> NIL
  18.  
  19. ;; Создана глобальная переменная *stack*
  20.  
  21. (push 'bar)
  22.  
  23. ==> BAR
  24.  
  25. (push 'foo)
  26.  
  27. ==> FOO
  28.  
  29. (top)
  30.  
  31. ==> FOO
  32.  
  33. (pop)
  34.  
  35. ==> FOO
  36.  
  37. (list-stack)
  38.  
  39. ==> (BAR)

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

Код представляет собой реализацию простого стека на языке Lisp. Стек — это структура данных, которая используется для хранения и обработки информации в порядке «последним пришел — первым вышел» (LIFO). Список функций позволяет создать и уничтожить стек, а также выполнить основные операции со стеком:

  • init-stack — инициализация стека;
  • push — добавление элемента в стек;
  • top — получение элемента, находящегося в вершине стека;
  • pop — удаление элемента из стека;
  • list-stack — вывод на экран содержимого стека.

Описание функций:

  1. (init-stack) — инициализирует глобальную переменную stack значением nil.
  2. (push n) — добавляет элемент n в глобальную переменную stack.
  3. (top) — возвращает элемент, находящийся в вершине стека.
  4. (pop) — удаляет и возвращает элемент из стека.
  5. (list-stack) — выводит на экран содержимое стека. В основной части кода создаётся экземпляр стека при помощи функции (init-stack). Затем с помощью функции (push) в стек добавляются два элемента: 'bar и 'foo. Получить элемент из стека с помощью функции (top), а затем удалить его с помощью функции (pop). Наконец, с помощью функции (list-stack) выводится на экран содержимое стека.

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


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

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

15   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы