Lista dwukierunkowa

0

Witam, natknąłem się na problem w liście kierunkowej pisanej w Pascalu. Program nie działa poprawnie, podejrzewam, że błąd jest w linii:

 aktualny^.nastepny^.poprzedni:=nowy;

. Poniżej przedstawiam listę w dużym uproszczeniu. Na razie chodzi mi tylko o to, by możliwe było dodawanie elementów po aktualnym wskaźniku.

program Lista_dwukierunkowa;
uses crt;

type
 wskaznik=^element;
 element=record
  nastepny, poprzedni: wskaznik;
  zawartosc: string;
  liczba: integer;
  end;

var
 {poczatek,koniec,}aktualny: wskaznik;
 znak: char;

procedure Create;
 begin
    //poczatek:=NIL;
    //koniec:=NIL;
    aktualny:=NIL;
 end;

procedure Add;
var nowy: wskaznik;
 begin
 new(nowy);
   if aktualny <> NIL then
    begin

     nowy^.priorytet:=6;
     nowy^.nastepny:=aktualny^.nastepny;
     nowy^.poprzedni:=aktualny;
     aktualny^.nastepny^.poprzedni:=nowy;  // nie dziala chyba przez ta linie
     aktualny^.nastepny:=nowy;
     writeln(nowy^.liczba);
    end
   else
    begin
     nowy^.nastepny:=NIL;
     nowy^.poprzedni:=NIL;
     aktualny:=nowy;
     aktualny^.priorytet:=7;
     writeln(aktualny^.liczba);
    end;
 end;
begin
clrscr;
writeln('Lista dwukierunkowa');
Create;

repeat
 writeln('Podaj znak d');
  readln(znak);
case znak of
 'd': Add;
 'j': writeln('Zly znak');
end;
until znak='q';
readln;
end. 

Edit ) Oczywiście kazde słowo priorytet w kodzie u góry powinno być zastąpione słowem liczba, ale mniejsza o to.

0

Edit) Może ma ktoś jakiś pomysł ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1