Определить функции 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 — вывод на экран содержимого стека.
Описание функций:
- (init-stack) — инициализирует глобальную переменную stack значением nil.
- (push n) — добавляет элемент n в глобальную переменную stack.
- (top) — возвращает элемент, находящийся в вершине стека.
- (pop) — удаляет и возвращает элемент из стека.
- (list-stack) — выводит на экран содержимое стека. В основной части кода создаётся экземпляр стека при помощи функции (init-stack). Затем с помощью функции (push) в стек добавляются два элемента: 'bar и 'foo. Получить элемент из стека с помощью функции (top), а затем удалить его с помощью функции (pop). Наконец, с помощью функции (list-stack) выводится на экран содержимое стека.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д