читаешь элемент из входного списка, далее перецепляешь его либо к четным, либо к нечетным в зависимости от ситуации:
Код:
type
PItem = ^TItem;
TItem = record
V : Integer;
Next : PItem;
end;
var
Src : PItem; // исходный список. заполнишь сам
Tgt1 : PItem;
Tgt2 : PItem;
Buf : PItem;
begin
Tgt1 := Nil;
Tgt2 := Nil;
While Src <> Nil Do
Begin
Buf := Src;
Src := Src.Next;
If (Buf.V mod 2) = 0 // четный
Then Buf.Next := Tgt2
Else Buf.Next := Tgt1;
End;
end;