Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_na_voprosy_k_ekzamenu_po_AiSD.docx
Скачиваний:
42
Добавлен:
29.04.2019
Размер:
417.06 Кб
Скачать

1 5. Пример алг реш зад извлечения эл-ов из списка по заданному признаку.

Задача 1 Требуется просмотреть список и удалить элементы, у которых информационные поля равны 4.

Обозначим P - рабочий указатель; в начале процедуры P = Lst. Введем также указатель Q, который отстает на один элемент от P. Когда указатель P найдет элемент, последний будет удален относительно указателя Q как последующий элемент.

x = 4

Q = nil

P = Lst

while P <> nil do

if info(P) = x then

if Q = nil then

Pop(Lst)

P = Lst

else

DelAfter(Q) endif

else

Q = P

P= Ptr(P)

endif

endwhile

return

16. Пример алг решения зад. Вставки заданных элементов в упорядоченный список.

Задача 2 Дан упорядоченный по возрастанию info - полей список. Необходимо вставить в этот список элемент со значением X, не нарушив упорядоченности списка. Пусть X = 16. Начальные условия: Q = Nil, P = Lst

X = 16

Q =Nil

P = Lst

while (P <> nil) and (X > info(P)) do

Q = P

P = Ptr(P)

endwhile

if Q = nil then

Push(Lst, X)

endif

InsAfter(Q, X)

return

17. Элементы заголовков в списках; нелинейные связные структуры.

Элементы заголовков в списках.

Для создания списка с заголовком в начало списка вводится дополнительный элемент, который может содержать информацию о списке (рис. 3.11).

В заголовок списка часто помещают динамическую переменную, содержащую количество элементов в списке (не считая самого заголовка).

Если список пуст, то остается только заголовок списка (рис. 3.12).

Также удобно занести в информационное поле заголовка значение указателя конца списка. Тогда, если список используется как очередь, то Fr=Lst, а re=Info(Lst).

Информационное поле заголовка можно использовать для хранения рабочего указателя при просмотре списка Р = Info(Lst). То есть заголовок – это дескриптор структуры данных.

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

Двусвязный список может быть нелинейной структурой данных, если вторые указатели задают произвольный порядок следования элементов (рис.3.13).

LST1 - указатель на начало 1 - ого списка (ориентированного указателем Р1). Он линейный и состоит из 5-и элементов:

2-ой список образован из этих же самых элементов, но в произвольной последовательности. Началом 2-ого списка является 3-ий элемент, а концом 2-ой элемент.

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

Можно выделить З признака отличия нелинейной структуры:

1) Любой элемент структуры может ссылаться на любое число других элементов структуры, то есть может иметь любое число полей-указателей.

2) На данный элемент структуры может ссылаться любое число других элементов этой структуры.

З) Ссылки могут иметь вес, то есть подразумевается иерархия ссылок.

Пример моделирования с помощью нелинейного списка

Представим, что имеется дискретная система, в графе состояния которой узлы – это состояния, а ребра – переходы из состояния в состояние (рис. 3.14).

  • Входной сигнал в систему это X.

  • Реакцией на входной сигнал является выработка выходного сигнала Y и переход в соответствующее состояние.

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

Реализация графа в виде нелинейного списка

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