Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Основные понятия. Нелинейные разветвленные списки

Нелинейные разветвленные списки

Begin

cur:=newh;

{ до конца выходного списка или пока ключ

следующего элемента не будет больше вставляемого }

while (cur^.next <> nil) and (cur^.next^.key < sel^.key) do

cur:=cur^.next;

{ вставка в выходной список после элемента cur }

sel^.next:=cur^.next;

cur^.next:=sel;

end;

Result:=newh;

end;

 

Нелинейным разветвленным списком является список, элементами которого могут быть также списки. В разделе 6.2 были рассмотрены двухсвязные линейные списки. Если один из указателей каждого элемента задает порядок, обратный к порядку, устанавливаемому другим указателем, то такой двусвязный список будет линейным. Однако если один из указателей задает порядок произвольного вида, не являющийся обратным по отношению к порядку, устанавливаемому другим указателем, то такой список будет нелинейным.

В обработке нелинейный список определяется как любая последовательность атомов и подсписков, где в качестве атома берется любой объект, который при обработке отличается от списка тем, что он структурно неделим. Если заключим списки в круглые скобки, а элементы списков разделим запятыми, то в качестве списков можно рассматривать такие последовательности:

 

(a,(b,c,d),e,(f,g))

()

((a))

 

Первый список содержит четыре элемента: атом a, список (b,c,d), содержащий в свою очередь атомы b,c,d, атом e и список (f,g), элементами которого являются атомы f и g. Второй список не содержит элементов, тем не менее, нулевой список, в соответствии с определением является действительным списком. Третий список состоит из одного элемента: списка (a), который в свою очередь содержит атом а.

Другой способ представления, часто используемый для иллюстрации списков, – графические схемы, аналогичен способу представления, применяемому при изображении линейных списков. Каждый элемент списка обозначается прямоугольником; стрелки или указатели показывают, являются ли прямоугольники элементами одного и того же списка или элементами подсписка. Пример такого представления показан на рис. 6.11.

 

 

 

 


Рис. 6.11. Схематическое представление разветвленного списка.

 

 

Разветвленные списки описываются тремя характеристиками: порядком, глубиной и длиной.

Порядок. Над элементами списка задается транзитивное отношение, определяемое последовательностью, в которой элементы появляются внутри списка. В списке (x,y,z) атом x предшествует y, а y предшествует z. При этом подразумевается, что x предшествует z. Данный список не эквивалентен списку (y,z,x). При представлении списков графическими схемами порядок определяется горизонтальными стрелками. Горизонтальные стрелки истолковываются следующим образом: элемент, из которого исходит стрелка, предшествует элементу, на который она указывает.

Глубина. Максимальный уровень, приписываемый элементам внутри списка или внутри любого подсписка в списке. Уровень элемента описывается вложенностью подсписков внутри списка, т.е. числом пар круглых скобок, окаймляющих элемент.

В списке, изображенном на рис. 6.11, элементы a и e находятся на уровне 1, в то время как оставшиеся элементы – b, c, d, f и g имеют уровень 2. Глубина входного списка равна 2. При представлении списков схемами концепции глубины и уровня облегчаются для понимания, если каждому атомарному или списковому узлу приписать некоторое число l. Значение l для элемента x, обозначаемое как l(x), является числом вертикальных стрелок, которое необходимо пройти для того, чтобы достичь данный элемент из первого элемента списка. Для нашего примера l(a)=0, l(b)=1 и т.д. Глубина списка является максимальным значением уровня среди уровней всех атомов списка.

Длина – число элементов уровня 1 в списке. Например, длина списка нашего примера равна 3.

Типичный пример применения разветвленного списка – представление алгебраического выражения в виде списка. Алгебраическое выражение можно представить в виде последовательности элементарных двухместных операций вида:

 

< операнд 1 > < знак операции > < операнд 2 >

 

Выражение (a+b)*(c-(d/e))+f

 

будет вычисляться в следующем порядке:

 

a+b

d/e

c-(d/e)

(a+b)*(c-d/e)

(a+b)*(c-d/e)+f

 

При представлении выражения в виде разветвленного списка каждая тройка «операнд-знак-операнд» представляется в виде списка, причем, в качестве операндов могут выступать как атомы – переменные или константы, так и подсписки такого же вида (рис. 6.12). Скобочное представление выражения будет иметь вид:

 

(((a,+,b),*,(c,-,(d,/,e)),+,f)

 

Глубина списка равна 4, длина - 3.

 

 
 

 


Рис. 6.12. Схема списка, представляющего алгебраическое выражение.

<== предыдущая лекция | следующая лекция ==>
End else. lptr = ^item; { указатель на элемент списка } | Операции обработки списков. Представление списковых структур в памяти
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 685; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.