Составители:
23
type
PElement = ^TypeElement; {указатель на тип элемента}
TypeElement = record {тип элемента списка}
Data: TypeData; {поле данных элемента}
Next: PElement; {поле указателя на следующий элемент}
end;
var
ptrHead: PElement; {указатель на первый элемент списка}
ptrCurrent: PElement; {указатель на текущий элемент}
Вставка первого и последующих элементов списка отличаются друг
от друга. Поэтому приводится два алгоритма вставки, оформленных в
виде процедур языка Паскаль: InsFirst_LineSingleList и
Ins_LineSingleList. В качестве входных параметров передаются
данное для заполнения создаваемого элемента, указатель на начало спис-
ка и указатель на текущий элемент в списке (при необходимости). Вы-
ходными параметрами процедур является указатель на начало списка
(который возможно изменится) и указатель текущего элемента, кото-
рый показывает на вновь созданный элемент (при вставке первого эле-
мента указателем на него будет указатель на заголовок списка).
Для добавления элемента в конец списка используется процедура
вставки последующего элемента для случая, когда текущий элемент яв-
ляется последним в списке:
procedure Ins_LineSingleList(DataElem: TypeData;
var ptrHead, ptrCurrent: PElement);
{Вставка непервого элемента в линейный однонаправленный список}
{справа от элемента, на который указывает ptrCurrent}
var
ptrAddition: PElement; {вспомогательный указатель}
begin
New(ptrAddition);
ptrAddition^.Data := DataElem;
if ptrHead = nil then begin {список пуст}
{создаем первый элемент списка}
ptrAddition^.Next := nil;
ptrHead := ptrAddition;
end else begin {список не пуст}
{вставляем элемент списка справа от элемента,}
{на который указывает ptrCurrent}
ptrAddition^.Next := ptrCurrent^.Next;
Страницы
- « первая
- ‹ предыдущая
- …
- 21
- 22
- 23
- 24
- 25
- …
- следующая ›
- последняя »