Шаг 10.
Вставка перед ключом нового элемента в список

    На этом шаге мы рассмотрим как вставить новый элемент в список перед ключом..

    Пусть pCKey определяет ссылку на компоненту с заданным ключом Key. Возможны два случая вставки нового элемента в список: вставка перед ключом Key и за ключом Key.

    Рассмотрим первый случай: вставка элемента с информационным полем Elem перед указателем pCKey. Изобразим схематично процесс вставки новой компоненты в список перед ключом Key:


Рис.1. Вставка в список новой компоненты перед ключом Key

    Рассмотрим алгоритм с помощью диаграмм "до и после" Д. Кнута:

    1 шаг. В динамической области памяти резервируем место для динамического объекта:

 New(pNew);


Рис.2. Определение места для объекта pNew

    2 шаг. В информационное поле нового объекта pNew помещаем значение информационного поля элемента, на который указывает pCKey.
    В поле ссылки на следующий элемент указателя pNew помещаем адрес элемента, следующего за компонентом, на которое указывает pCKey:

  pNew^.Element := pCKey^.Element;
  pNew^.pNext := pCKey^.pNext;


Рис.3.

    3 шаг. В информационное поле элемента, на который указывает pCKey, помещаем новое значение.
    В поле ссылки на следующий элемент указателя pCKey помещаем адрес элемента, на который указывает pNew:

 pCKey^.Element := Elem;
 pCKey^.pNext := pNew;


Рис.4.

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

 Procedure Insert_Element1(Elem : Integer; pCKey : PrtRec);
   var pNew : PtrRec;
 Begin
   New(pNew);
   pNew^.Element := pCKey^.Element;	{эти две строки можно}
   pNew^.pNext := pCKey^.pNext;	{заменить pNew^ := pCKey^;}
   pCKey^.Element := Elem;
   pCKey^.pNext := pNew;
 End;

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




Предыдущий шаг Содержание Следующий шаг