Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Соглашение о ведущем и завершающем узлах связных списков.Содержание книги
Поиск на нашем сайте
Список циклический (не бывает пустым)
Ведущий указатель, Null – указатель завершающего узла.
Фиктивный ведущий узел, Null – указатель завершающего узла
Фиктивный ведущий и завершающий узлы.
Для связных списков наиболее характерны следующие ошибки: 1) ссылка на неопределенный указатель 2) использование указателя, который изменяется неизвестным образом Причина этих ошибок – возможное присутствие указателей на один и тот же узел.
Линейные связные списки. Двусвязные списки Линейный связный список - последовательность ячеек, связанных в некотором порядке. Каждая ячейка имеет два поля: в одном из них находится элемент списка, в другом – указатель, сообщающий положение следующей ячейки. Пример 1 позиция = 1 2 3 4 5 6 7 8 9 [i] A[i] = x b x d a x c x x Next[i] = x 7 x 0 2 x 4 x x IP = 5 признак конца = 0 A[3] <- e Next[3] <- Next[2] Next [2] <- 3 Если хотим удалить символ 7, то Next[2] <- [7] Двусвязные списки Двусвязные (двунаправленные) линейные списки - линейные списки, записи которых связаны посредством пары указателей, хранимых в адресных полях записей списка. Логическую структуру двусвязного списка иллюстрирует следующая диаграмма
Рис. 1. В каждой записи поле prev содержит адрес предыдущей записи, поле - next - адрес последующей записи, а data обозначает информационные поля. Для доступа к списку могут быть использованы адреса начальной (start), конечной (end) и текущей (this) записей списка. Индикатором начальной и конечной записей являются нулевые (NULL) значения адресных полей Start и end, соответственно.
Любая функциональная обработка списка строится на основе процедур модификации и просмотра. Процедуры модификации списка должны обеспечивать вставки и исключение записей списка. Частным случаем процедур вставки и исключения являются процедуры добавить и удалить начальную или конечную запись списка. Следующая диаграмма иллюстрирует процедуру вставки новой записи Z после записи Y (или перед записью X)
Рис. 2. Следующая диаграмма иллюстрирует процедуру исключения текущей записи this.
Рис. 3. Процедуры просмотра списка должны обеспечивать смещение указателя текущей записи (this) на требуемое число позиций в направлении начала или конца списка, как показано на следующей диаграмме.
Рис. 4. Частным случаем смещения указателя текущей записи является переход к соседней предыдущей или последующей записи (смещение на 1 позицию), а также нефиксированный переход к начальной или конечной записям списка, который позволяет принудительно инициализировать указатели start и end после модификаций в начале и конце списка.
Хранение целых списков Целый список - линейный список, элементы которого принадлежат множеству натуральных чисел, причем некоторые элементы могут повторяться. В целых списках m – число элементов, n – размах списка, тогда разреженный список тот, в котором m<<n. Для хранения разреженных списков в компактной форме используются массивы. Если требуется сохранить упорядоченность целых чисел, то включение и исключение элемента из какой-либо позиции вызывает сдвиг всех элементов, находящихся справа от нее. Причем целые списки могут хранить как связные линейные списки, так и кольцевые списки, посредством массива A длины не меньшей m и соответствующего дополнительного массива Next. Этот тип хранения также является компактным. Альтернативой может служить метод хранения с использованием одного массива A, длина которого соответствует размаху N. Число, хранимое в каждой позиции A дает одновременно значение элемента списка и адрес следующего элемента, в этом случае Next оказывается излишним. Дополнительный указатель IP задает позицию первого числа в списке. Этот тип хранения называется расширенным
|
|||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2021-07-18; просмотров: 142; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.16 (0.008 с.) |