Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 7
1

Преобразование простых динамических структур данных

01.02.2014, 00:07. Просмотров 934. Ответов 11
Метки нет (Все метки)


Помогите пожалуйста с заданием
Под именами х и у заданы списки Лиспа (а (b с)) и (d е), соответственно. Надо, используя их и не тратя при этом дополнительных списочных ячеек памяти, создать бесконечный (при выводе на экран) список (e b c b c d e b c b c d e ...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.02.2014, 00:07
Ответы с готовыми решениями:

Превращение простых динамических структур данных
Пожалуйста, помогите решить задачу!! Под именами х и y заданы списки Лиспы (a b c d e) и (1 2 3 4...

Построение динамических структур данных
Использование структурных ячеек, которые собственноручно создаются пользователем с помощью средств...

Разработка динамических структур данных и функций их обработки
Длинное» целое число представляется как однонаправленный линейный список, где каждая цифра –...

Формирование, сортировка и обработка динамических структур данных.
Требуется решить задачу формирования, сортировки и обработки динамических структур данных. ...

11
Модератор
Эксперт Python
28371 / 15271 / 3010
Регистрация: 12.02.2012
Сообщений: 25,000
Записей в блоге: 4
01.02.2014, 15:18 2
Делаем из (a (b c)) список (b c b c) , не тратя при этом дополнительных списочных ячеек:

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
(setq x '(a (b c)))
 
==> (a (b c))
 
(rplacd (cdr x) (cadr x))
 
==> ((b c) b c)
 
(rplaca x (caadr x))
 
==> (b (b c) b c)
 
(rplaca (cdr x) (cadr (cadr x)))
 
==> (c b c)
 
x
 
==> (b c b c)
Дальше попробуй сам (сама).
1
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 7
03.02.2014, 00:49  [ТС] 3
Цитата Сообщение от xxxt Посмотреть сообщение
Помогите пожалуйста с заданием
создать бесконечный (при выводе на экран) список (e b c b c d e b c b c d e ...
Какой функцией его можно будет в конце зациклить?
0
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
03.02.2014, 01:52 4
scheme
Lisp
1
2
3
4
5
6
7
(define (f x)
  (define (iter flag)
    (cond ((= flag flag)
           (display x)
           (iter flag))
          (else display x)))
  (iter 1))
0
Модератор
Эксперт Python
28371 / 15271 / 3010
Регистрация: 12.02.2012
Сообщений: 25,000
Записей в блоге: 4
03.02.2014, 07:05 5
Цитата Сообщение от xxxt Посмотреть сообщение
Какой функцией его можно будет в конце зациклить?
- rplaca, rplacd, setf

Добавлено через 45 секунд
castorsky, Вы полагаете, что Ваше решение не требует новых списочных ячеек?
0
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
03.02.2014, 19:11 6
Catstail, а что такое списочные ячейки?
0
Модератор
Эксперт Python
28371 / 15271 / 3010
Регистрация: 12.02.2012
Сообщений: 25,000
Записей в блоге: 4
03.02.2014, 19:28 7
Цитата Сообщение от castorsky Посмотреть сообщение
что такое списочные ячейки?
- это то, из чего строятся списки в Лиспе. Списочная ячейка содержит два поля указателей a-поле и d-поле. Эти поля могут указывать на символы (aтомы), а могут - на другие ячейки. Список (a (b c)) содержит 4 списочные ячейки, а список (d e) - две. Суть задачи в том, чтобы модифицируя a- и d-указатели этих ячеек (и не вызывая cons) построить циклический список заданной структуры.

Добавлено через 2 минуты
Вот в этой нити я разместил некоторые картинки, которые иллюстрируют сказанное.
1
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,354
03.02.2014, 23:31 8
спасибо. Ну допустим на с++ это можно сделать с помощью указателей. Например, стек или список в котором хвост (последний елемент в данном случае имеется в виду) указывает на голову и тем самым зацикливается, а какой инструмент типа указателей есть в лиспе (если он вообще нужен)?
0
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 7
04.02.2014, 02:11  [ТС] 9
Цитата Сообщение от castorsky Посмотреть сообщение
спасибо. Ну допустим на с++ это можно сделать с помощью указателей. Например, стек или список в котором хвост (последний елемент в данном случае имеется в виду) указывает на голову и тем самым зацикливается, а какой инструмент типа указателей есть в лиспе (если он вообще нужен)?
У меня такая-же проблема. На С++ я бы эту задачу сделал за полторы минуты А в лиспе я ваще почти нечего не знаю, и уже ужасно запутался в этой каше.
0
4320 / 3329 / 339
Регистрация: 12.03.2013
Сообщений: 5,828
04.02.2014, 03:10 10
Лучший ответ Сообщение было отмечено как решение

Решение

http://stackoverflow.com/quest... ommon-lisp

В лиспе всякая переменная - указатель.
4
Модератор
Эксперт Python
28371 / 15271 / 3010
Регистрация: 12.02.2012
Сообщений: 25,000
Записей в блоге: 4
04.02.2014, 11:47 11
Продолжим:

Lisp
1
2
3
4
5
(rplacd (cdr y) x)
(rplacd (cdddr x) y)
(setq y (cdr y))
 
==> (e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e b c b c d e ...
2
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 7
05.02.2014, 16:36  [ТС] 12
Спасибо
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2014, 16:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Описать одну из сложных динамических структур данных
Нужно написать программку... Тема: Линейный односвязный список. Добавление узла после заданного. ...

Разработка алгоритмов и программ с использованием динамических структур данных
Перевернуть список L, то есть изменить ссылки в этом списке так, чтобы его элементы оказались...

Алгоритмы и программы по использованию указателей и динамических структур данных
Здравствуйте! Помогите, пожалуйста, написать задачу. Вот текст:Дан указатель P0 на один из...

Алгоритмы и программы по использованию указателей и динамических структур данных
Здравствуйте! Прошу Вас помочь мне в написании задачи на С++. Вот текст: Дан указатель P1 на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.