Списки. Создание списка. Определение. Списком называется структура данных, каждый элемент которой посредством указателя связывается со следующим элементом. Из определения следует, что каждый элемент списка содержит поле данных (Data) (оно может иметь сложную структуру) и поле ссылки на следующий элемент (Next). Поле ссылки последнего элемента должно содержать пустой указатель (Nil).
Списки. Создание списка. Пусть требуется сформировать список, содержащий целые числа 3, 5, 1, 9. Для этого сначала определим запись типа S с двумя полями. В одном поле будут содержаться некоторые данные (в нашем случае числа 3, 5 , 1 и 9), а в другом поле будет находиться адрес следующего за ним элемента. Type Ukazatel = ^S; S = Record Data : integer; Next : Ukazatel; End;
Списки. Создание списка. Все элементы списка взаимосвязаны, т. е. о том, где находится следующий элемент, "знает" только предыдущий. Поэтому самое главное в программе - это не потерять начало списка. Для этого на начало списка установим указатель с именем Head и будем следить за тем, чтобы на протяжении выполнения программы значение этого указателя не менялось. Опишем переменные: Var Head, x: Ukazatel; Head - указатель на начало списка x - вспомогательный указатель для создания очередного элемента списка
Списки. Создание списка. Создадим первый элемент: New(x); {выделим место в памяти для переменной типа S} x^. Data : = 3; {заполним поле Data первого элемента} x^. Next : = Nil; {заполним поле Next первого элемента: указатель в Nil} Head : = x; {установим указатель головы списка на первый элемент}
Списки. Создание списка. Теперь к выделенной области памяти можно обратиться через два указателя. Продолжим формирование списка, для этого добавим элемент в конец списка. Вспомогательная переменная указательного типа х будет хранить адрес последнего элемента списка. Сейчас последний элемент списка совпадает с его началом, поэтому справедливы равенства: Head^. Next = x^. Next; Head^. Data = x^. Data; Head = x; Выделим область памяти для следующего элемента списка. New(x^. Next);
Списки. Создание списка. Присвоим переменной х значение адреса выделенной области памяти, то есть, переставим указатель на вновь выделенную область памяти: x : = x^. Next; Определим значение этого элемента списка, то есть, заполним поля: x^. Data : = 5; x^. Next : = Nil;
Списки. Создание списка. Теперь у нас список содержит два элемента. Для того, чтобы создать третий и четвертый элементы, нужно проделать те же самые операции. Задание. Составьте программу, содержащую процедуру создания списка путем вставки элементов в его конец и процедуру просмотра списка и вывода на экран его элементов. Процедуры должны содержать параметр, в который передается начало списка.
Списки. Создание списка.
Списки. Создание списка.
Списки. Создание списка.