Списковые структуры. Линейный список

Линейный список – структура данных, позволяющая учесть «вложенность». Используют линейные списки для описания выражений (арифметических, логических), структуры текста программы на алгоритмическом языке и т. д.

Пусть a,b,c,...,+,-,*,/ - элементы типа Т (атомы), скобки – особые символы, описывающие вложенность.

Определение 1 (рекуррентное) линейного списка:

1. атом есть линейный список (атомарный);

2. () – линейный список (пустой);

3. если l1,l2,...,ln – линейные списки (n>0), то и (l1 l2...ln) – линейный список.

В непустом неатомарном списке (l1 l2...ln) l1- голова списка, (l2...ln) - хвост списка.

Примеры.

Пример Описание Степень вложенности (уровень)
a атомарный список 0 (элемент а на уровне 0)
(a) список неатомарный 1 (элемент а на уровне 1)
() пустой список 1 (нет элементов на уровне 1)
(()) непустой список 2 (элемент () на уровне 1)
ab не список -
a(b) не список -
(ab) список 1 (элементы а и b на уровне 1)
(((ab)c)(de)) список 3 (элементы а и b на уровне 3)
((a+b)/(c+d)*f) список 2 (элементы а, +, b, с, +, d – на уровне 3)

Определение 2 (рекурсивное) линейного списка

Пусть S – линейный список, S+ – неатомарный список, S* – непустой неатомарный список.

1. атом есть линейный список (атомарный);

2. () – линейный список (пустой);

3. S = (либо пустой, либо атомарный, либо S*);

4. S* = (голова:S, хвост:S+);

5. S+ = (либо пустой, либо S*);

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

§ Создать атомарный список;

§ Создать пустой список;

§ Создать список из набора имеющихся списков по п.3 определения 1;

§ Список пуст?;

§ Список атом?;

§ Расчленение (выделение головы и хвоста);

§ Голова (функция с побочным эффектом);

4.2 Об операции "расчленение"

Операция определена на непустых неатомарных списках S*.

Голова - первый элемент первого уровня. Хвост - список без головы.

Примеры:

Список Голова Хвост
(a) a ()
(ab) a (b)
(()) () ()
(((ab)c)(de)) ((ab)c) ((de))

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: