Страница 1 из 1

Pascal. Связные списки.

Добавлено: 03 дек 2008, 21:40
KaVale4ka
пожайлусто, помогите решить достаточно несложную задачку. Ну никак не могу разобраться.
Создать связный список из трех узлов, а потом удалить второй узел. Без процедур и функций.

вот шапка задачи:

Uses CRT;
Type
TKey=integer;
PNOde=^TNode;
TNode=record
key:TKey; next:PNode; end;

Re: Pascal. Связные списки.

Добавлено: 04 дек 2008, 09:37
Naeel Maqsudov
Var
Tmp, Head:PNode;

Последний элемент списка создается так:

Код: Выделить всё

New(Head);
whth Head^ do begin
   key:=<какое-то значение>; 
   next:=nil;
end;
Добавить еще 1 элемент в начало можно так: (это делается 2 раза)

Код: Выделить всё

New(Tmp);
whth Tmp^ do begin
   key:=<какое-то значение>; 
   next:=Head;
end;
Head:=Tmp;

Теперь удаляем второй элемент:

Код: Выделить всё

Tmp:=Head^.next;  {Tmp теперь указывает на 2 элемент}
Head^.next:=Tmp^.next; {теперь второй элемент вне цепочки. третий на его месте}
Dispose(Tmp); {а теперь его вообще не стало}