Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Структура односвязного линейного списка




Односвязные линейные списки – это данные динамической структуры, состоящие из однородных элементов, линейно связанных между собой.

Для них определены следующие действия:

• Добавление элемента в начало (голову) списка;

• Добавление элемента в конец (хвост) списка;

• Вставка элемента между двумя любыми другими элементами списка;

• Удаление любого элемента списка.

Каждый элемент списка состоит из данных и ссылки на следующий элемент списка. На первый элемент списка и тем самым на весь список указывает переменная-указатель. Последний элемент содержит пустую ссылку nil.

Для представления элементов списка используют записи, например: type ref =^Elem; Elem=record inf: integer; next: ref end; Тип ref – это указатель на переменные базового типа Elem

 

Замечание: при описании указательных типов разрешается в правой части равенства указывать идентификатор базового типа (здесь Elem), который еще не описан, но тогда его описание должно быть сделано в этом же разделе описания типов type.

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

С указателем на голову списка нельзя производить никаких действий, которые могут стать причиной утери всего списка. Для работы со списком обычно заводят вспомогательный указатель, копируя в него ссылку на голову списка, например: p:=Head.

Для доступа к элементам списка будем использовать следующие конструкции:

p – адрес текущего элемента списка;

p^ – запись из двух полей, хранящаяся по адресу p;

p^.inf – первое поле этой записи;

p^.next – второе поле этой записи, являющееся адресом следующего элемента списка;

p^.next^.inf – первое поле элемента списка, следующего за тем, на который указывает р;

p^.next^.next – второе поле элемента списка, следующего за тем, на который указывает р.

Основные действия над односвязными линейными списками

При описании действий используются следующие переменные:

var Head,p,pred,q,pmax:ref;

x,A,tmp:integer;

Создание пустого списка

Head:=nil

Вставка элемента в начало списка

Исходный список Список после вставки элемента

new(q); //Выделение в динамической памяти места для нового элемента

q^.inf:=x; //Заполнение поля данных

q^.next:=Head; //Заполнение поля ссылки

Head:=q; //Присоединение нового элемента к началу списка

Удаление первого элемента

Исходный список Список после удаления первого элемента

p:=Head; //Установка текущего указателя на начало списка

Head:=p^.Next;//Установка Head на элемент, следующий за первым

Dispose(p); //Освобождение памяти, которую занимал первый элемент

p:=nil;

Проходы по списку

Проходом называют посещение всех элементов списка, начиная с головы списка.





Поделиться с друзьями:


Дата добавления: 2016-11-12; Мы поможем в написании ваших работ!; просмотров: 434 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Жизнь - это то, что с тобой происходит, пока ты строишь планы. © Джон Леннон
==> читать все изречения...

2335 - | 2116 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.01 с.