Составители:
28
end;
var
ptrHead: PElement; {указатель на первый элемент списка}
ptrCurrent: PElement; {указатель на текущий элемент}
Операция вставки реализовывается с помощью двух процедур, ана-
логичных процедурам вставки для линейного однонаправленного спис-
ка: InsFirst_LineDubleList и Ins_LineDubleList. Однако
при вставке последующего элемента придется учитывать особенности
добавления элемента в конец списка:
procedure Ins_LineDubleList(DataElem: TypeData;
var ptrHead, ptrCurrent: PElement);
{Вставка непервого элемента в линейный двунаправленный список}
{справа от элемента, на который указывает ptrCurrent}
var
ptrAddition: PElement; {вспомогательный указатель}
begin
New(ptrAddition);
ptrAddition^.Data := DataElem;
if ptrHead = nil then begin {список пуст}
{создаем первый элемент списка}
ptrAddition^.Next := nil;
ptrAddition^.Last := nil;
ptrHead := ptrAddition;
end else begin {список не пуст}
{вставляем элемент списка справа от элемента,}
{на который указывает ptrCurrent}
if ptrCurrent^.Next <> nil then {вставляем не последний}
ptrCurrent^.Next^.Last := ptrAddition;
ptrAddition^.Next := ptrCurrent^.Next;
ptrCurrent^.Next := ptrAddition;
ptrAddition^.Last := ptrCurrent;
end;
ptrCurrent := ptrAddition;
end;
procedure InsFirst_LineDubleList(DataElem: TypeData;
var ptrHead: PElement);
{Вставка первого элемента в линейный двунаправленный список}
var
ptrAddition: PElement; {вспомогательный указатель}
begin
Страницы
- « первая
- ‹ предыдущая
- …
- 26
- 27
- 28
- 29
- 30
- …
- следующая ›
- последняя »