Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pol_Grem_-_ANSI_Common_Lisp_High_tech_-_2012.pdf
Скачиваний:
28
Добавлен:
12.03.2016
Размер:
4.85 Mб
Скачать

94

Глава 4. Специализированные структуры данных

Упражнения

1.Опре­де­ли­те­ функцию,­ пово­ра­чи­ваю­щую­ квадрат­ный­ массив­ (массив­ с размер­но­стя­ми­ (n n)) на 90 граду­сов­ по часо­вой­ стрелке:­

> (quarter-turn #2A((a b) (c d))) #2A((C A) (D B))

Вам потре­бу­ет­ся­ array-dimensions (стр. 374).

2.Разбе­ри­тесь­ с описа­ни­ем­ reduce на стр. 382, затем­ с ее помо­щью­ опре­­ делите:­

(а) copy-list

(b)reverse (для списков)­

3.Создай­те­ структу­ру­ для дере­ва,­ каждый­ узел кото­ро­го­ поми­мо­ неко­­ торых­ данных­ имеет­ трех потом­ков­. Опре­де­ли­те:­

(a)функцию,­ копи­рую­щую­ такое­ дере­во­ (каждый­ узел скопи­ро­­ ванно­го­ дере­ва­ не должен­ быть экви­ва­лент­ен­ исход­но­му­ с точки­ зрения­ eql);

(b)функцию,­ прини­маю­щую­ объект­ и такое­ дере­во­ и возвра­щаю­­ щую исти­ну,­ если­ этот объект­ встреча­ет­ся­ (с точки­ зрения­ eql) в поле­ данных­ хотя­ бы одно­го­ узла­ дере­ва­.

4.Опре­де­ли­те­ функцию,­ кото­рая­ строит­ из BST-дере­ва­ список­ его объ­ ектов,­ отсор­ти­ро­ван­ный­ от больше­го­ к меньше­му­.

5.Опре­де­ли­те­ bst-adjoin1. Функция­ рабо­та­ет­ анало­гич­но­ bst-insert, од­ нако­ добав­ля­ет­ новый­ объект­ лишь в том случае,­ если­ он отсут­ст­ву­­ ет в имеющем­ся­ дере­ве­.

6.Содер­жи­мое­ любой­ хеш-табли­цы­ может­ быть представ­ле­но­ в виде­ ассо­циа­тив­но­го­ списка­ с элемен­та­ми­ (k . v) для каждой­ пары­ ключзначе­ние­. Опре­де­ли­те­ функцию,­ строящую:­

(a)хеш-табли­цу­ по ассо­циа­тив­но­му­ списку;­

(b)ассо­циа­тив­ный­ список­ по хеш-табли­це­.

1В дейст­ви­тель­но­сти,­ опре­де­ле­ние­ bst-adjoin будет­ экви­ва­лент­но­ уже имею­ щему­ся­ bst-insert. На это указал­ Ричард­ Грин. – Прим. перев­.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]