Реализация стека
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Реализация стека

Реализация стека

Ответ
Поиск в этой теме
Непрочитано 21.05.2007, 22:53 #1
Реализация стека
Антон87
 
Казань
Регистрация: 21.05.2007
Сообщений: 4

Привет всем. Я новичок в Лиспе,даже скорее чайник.
Возникла следующая задача,которую не могу решить.
На взгляд задание большинству покажется простеньким, так что сильно не ругайтесь=):
Задача:

Реализация стека. Необходтмо придумать программу на Лиспе, которая будет работать на этом алгоритме

Заранее благодарен всем кто откликнется.
Просмотров: 3543
 
Непрочитано 21.05.2007, 23:52
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Если я правильно понял вопрос:
Код:
[Выделить все]
(defun pop (stack obj)
           ;|
*    Функция помещает в стек объект. Новый объект занимает первое место в стеке
*    Параметры вызова:
*	stack	указатель на объект стека
*	obj	добавляемый объект
|;
  (cons obj stack)
  ) ;_ end of defun

(defun push (stack)
            ;|
*    Функция удаления объекта из стека
|;
  (cdr stack)
  ) ;_ end of defun

(defun get (stack)
           ;|
*    Функция получения первого элемета стека без его удаления
|;
  (car stack)
  ) ;_ end of defun

;|
*    примеры вызовов:
(setq st '())
(setq st (pop st 1))
(1)
_$ (setq st (pop st 2))
(2 1)
_$ (setq st (pop st 3))
(3 2 1)
_$ (setq st (pop st 4))
(4 3 2 1)
_$ (get st)
4
_$ (setq st (push st))
(3 2 1)
_$ st
(3 2 1)
|;
В качестве obj можно использовать любые поддерживаемые lisp'ом типы данных. Проверял на AutoLISP.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 22.05.2007, 10:50
#3
Антон87


 
Регистрация: 21.05.2007
Казань
Сообщений: 4


Огромное спасибо! только один вопрос имеется: можно ли запустить эту программу на обычном лиспе? заранее спасибо
Антон87 вне форума  
 
Непрочитано 22.05.2007, 23:30
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Не знаю, у меня кроме autolisp'a ничего не имеется
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 23.05.2007, 08:00 Re: Реализация стека
#5
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от Антон87
Реализация стека. Необходтмо придумать программу на Лиспе, которая будет работать на этом алгоритме
Если задача неучебная, то стоит подумать над алгоритмом. ЛИСП не нуждается в стеках, это как прикручивать колёса от автомобиля к подводной лодке.

Если это постановка преподавателя, то надо именно это и сделать - изобразить средствами ЛИСП то, что хочет препод (самостоятельно!), но нужно точно понимать, что он хочет. Стеки бывают разные - FIFO и FILO, фиксированной длинны и переменной...

Функции CAR и CDR относятся к базовым и обязаны быть в любой реализации ЛИСП.
Alaspher вне форума  
 
Автор темы   Непрочитано 23.05.2007, 13:01 Реализация стека
#6
Антон87


 
Регистрация: 21.05.2007
Казань
Сообщений: 4


Это программа учебная, должна работать на принципе FILO
но нужна она на Common LISP(XLisp)
Спасибо
Антон87 вне форума  
 
Непрочитано 23.05.2007, 13:28
#7
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Если нет требования по размерности стека, то понадобятся ровно 3 функции, которые уже упоминались:

CAR - возвращает первый элемент списка;
CDR - возвращает список без первого элемента;
CONS - возвращает список с добавленным новым первым элементом.

Эти функции, насколько я знаю, есть в любой реализации ЛИСП. Единственно, что надо прочитать их описание - могут быть нюансы поведения.
Alaspher вне форума  
 
Автор темы   Непрочитано 23.05.2007, 13:59 Реализация стека
#8
Антон87


 
Регистрация: 21.05.2007
Казань
Сообщений: 4


спасибо попробую
Антон87 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Реализация стека