Przepisanie listy

Co jest źle, że wyświetla tylko ostatnią liczbę?

A może kompletnie źle to przepisane jest?

 

Edit, doszedłem do wniosku, że  procedura przepisujaca nie działa jak powinna… tzn przepisuje tylko pierwszy element a nie wszystko. Jakaś rada?

// lista dwukierunkowa
type
  plista_d = ^tlista_d;
tlista_d = record
klucz: integer;
parz: boolean;
prev, next: plista_d;
end;
// lista jednokierunkowa
  type
  plista = ^tlista;
tlista = record
klucz: integer;
nast: plista;
end;

      procedure przepisz_do_listy_jednokierunkowej( head:plista_d;   var pocz: plista);
        begin
           if head=nil then writeln('nie ma co kopiowac')
            else
            begin
            new(pocz);
            while head<>nil do
            begin
            pocz^.klucz:=head^.klucz;
            head:=head^.next;
           end;
        end;
      end;

// wyświetlenie listy jednokierunkowej po przepisaniu

procedure wyswietl1(pocz:plista);
      begin
     if pocz=nil then writeln('lista pusta')
        else
        begin
        while pocz<>nil do
          begin
          writeln(pocz^.klucz);
          pocz:=pocz^.nast;
          end;
        end;
      end;