Рис. 21. Структура односвязного списка
На первый элемент списка указывает указатель first. Если список пуст, то first = nil. Если список не пуст, то к атрибуту любого его элемента (например, первого) можно получить доступ через указатель.
x:=first ^.info; p:=first ^.link; | { значение информационного поля первого элемента } { значение поля связи первого элемента – адрес второго элемента } |
К атрибутам любого элемента списка, кроме первого, возможен дистанционный доступ.
x:=first ^.link ^.info; | { значение информационного поля второго элемента } |
Дистанционный доступ ко второму узлу списка эквивалентен следующей последовательности операторов:
p:=first ^.link; x:=p^.info; | { установка вспомогательного указателя на второй узел списка } { значение информационного поля второго узла списка } |
Одна из самых простых операций по модификации списка – включение нового узла в его начало (рис. 22): элемент хранения типа list размещается в памяти и указатель на него присваивается некоторой вспомогательной переменной p, затем устанавливается связь между вставленным узлом и списком, после чего указатель на первый элемент списка получает новое значение.