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

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

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

Определить функции initialize, push, top, pop и list-stack, поддерживающие глобальный стек. Они должны вести себя следующим образом:
> (initialize) 
nil 
> (push 'foo) 
foo 
> (push 'bar) 
bar 
> (top) 
bar 
> (list-stack) 
(bar foo) 
> (pop) 
bar 
> (list-stack) 
(foo)

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

textual
Листинг программы
(defun init-stack nil (setq *stack* nil))
 
(defun push (n) (setq *stack* (cons n *stack*)) n) 
 
(defun top nil (car *stack*))
 
(defun pop nil 
  (let ((r (car *stack*)))
    (setq *stack* (cdr *stack*)) r))
 
(defun list-stack nil *stack*)
 
;; Проверка
 
(init-stack)
 
==> NIL
 
;; Создана глобальная переменная *stack*
 
(push 'bar)
 
==> BAR
 
(push 'foo)
 
==> FOO
 
(top)
 
==> FOO
 
(pop)
 
==> FOO
 
(list-stack)
 
==> (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
Похожие ответы