14733

Ознакомиться с реализацией рекурсивных структур данных (на примере списков) на языке Lisp

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторная работа №7 Цели работы Ознакомиться с реализацией рекурсивных структур данных на примере списков на языке Lisp. Реализовать основные функции работы со списками: создание списка вставка элемента с клавиатуры на позицию по з

Русский

2013-06-09

31.5 KB

6 чел.

Лабораторная работа №7

Цели работы

  1.  Ознакомиться с реализацией рекурсивных структур данных (на примере списков)  на языке Lisp.

  1.  Реализовать основные функции работы со списками:
    1.  создание списка,
    2.  вставка  элемента с клавиатуры на позицию по заданному номеру,
    3.  удаление элемента по номеру элемента,
    4.  поиск по номеру элемента (вывод значения),
    5.  поиск по значению элемента (вывод номера),
    6.  вывод на экран элемента по номеру,
    7.  вывод на экран всего списка.

  1.  Вызов функций осуществить с помощью системы текстового меню.

Описание работы

Работа представляет собой несколько дополнительных функций и одну основную (menu), средствами которой реализована работа со списком. Меню реализует 7 пунктов  для работы со списком и 1 для выхода из программы.

Перечислим эти пункты:

  1.  создание списка,
    1.  вставка  элемента с клавиатуры на позицию по заданному номеру,
    2.  удаление элемента по номеру элемента,
    3.  поиск по номеру элемента (вывод значения),
    4.  поиск по значению элемента (вывод номера),
    5.  вывод на экран элемента по номеру,
    6.  вывод на экран всего списка,
    7.  сортировка списка (вывод списка до и после сортировки),
    8.  Выход;

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

(8 7 6 5 4 3 2 1)

При выборе определенного пункта меню содержимое списка может быть изменено в соответствии с работой части кода функции menu, соответствующей данному пункту.  После работы определенной части кода, menu рекурсивно вызывает себя. Для завершения работы программы следует ввести “0”,  который соответствует завершению работы программы.

Описание дополнительных функций

insert (X N LST) - Вставка по номеру

Если список пуст, идёт добавление элемента. Иначе, если счетчик стоит на указанной позиции (для N = 1) идёт добавление элемента.  Для прочих N – рекурсивный вызов для N = N-1 и хвоста списка.

DEL (N LST)  – Удаление по номеру

Если N = 1, возвращается хвост, иначе – возвращается голова + результат рекурсивного вызова удаления.

SCH (N list) – Поиск

Функция рекурсивно вызывает саму себя, каждый раз передавая в качестве списка хвост текущего списка. Если функция находит искомый элемент, то возвращает строку "НАЙДЕН!" и прекращает поиск.  Если функция доходит до конца списка – возвращает строку  "НЕ НАЙДЕН!".

Примечание: Все прочие функции, использованные в лабораторной работе, с помощью которых были реализованы некоторые пункты меню, являются стандартными функциями среды GNU CLisp 2.45.

Вывод:

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


 

А также другие работы, которые могут Вас заинтересовать

66659. Потребительские свойства услуг 62 KB
  Показатели назначения услуг характеризуют набор свойств услуги определяющий качество выполнения функций для которых она предназначена. Эта группа показателей делится на четыре подгруппы: показатели применения; показатели совместимости; показатели предприятия...
66661. Иннокентий Петрович Герасимов 122.5 KB
  Каждый ученый-почвовед творец. Почвоведу как ни кому другому нужно уметь слушать и слышать природу. Недостаточно ограничиться только своим объектом почвой и недостаточно будет сухих лабораторных данных сколь информативными они бы ни были. И не зря здесь говорится именно ...
66662. Классицизм в архитектуре Москвы 851.12 KB
  Как определенное направление сформировался во Франции, в XVII веке. Французский классицизм освобождал человека от религиозно-церковного влияния, утверждая личность как высшую ценность бытия. Русский классицизм не просто воспринял теорию западноевропейскую...
66665. Социальная стратификация в современном обществе 43.5 KB
  Безработные как особая страта в структуре общества. Разные социологи подходят к решению вопроса о стратификации общества с различных точек зрения. Стратификация социологическое понятие обозначающее: структуру общества и отдельных ее слоев; систему признаков социального расслоения неравенства.
66666. Основи педагогіки 139.5 KB
  Педагогіка це фундаментальна суспільна наука яка вивчає закономірності здійснення навчальновиховної діяльності а також функціонування систем освіти. Саме поняття педагогіка має дуже давню історію. Використання слів педагогіка дидактика і т.
66667. Жизнь и научная деятельность Константина Дмитриевича Глинки 105.79 KB
  Его отец дворянин Дмитрий Константинович Глинка один из прямых продолжателей рода великого композитора и музыкального деятеля М. Полынов описывая фотографию тех лет на которых запечатлены Глинка с супругой подчеркивает что форма солдата саперной...