kolejka w rekordzie

0

mam problem... mecze sie z programem (cykliczna lista kolejek) nie wiem jak umiescic kolejke w elemencie listy:) help me...

0

może jakiś kod, bo jasnowidz na emeryturze jest ...

0
program teta2;

{$AppType CONSOLE}

uses
  SysUtils;

type
  t_el_kol =^element_kolejki;
  element_kolejki = record
                    liczba:real;
                    nastepny:t_el_kol;
                    end;

  t_element     = ^element_listy;
  element_listy = record
                    //dane elementu listy
                    nazwa  :string;
                    wartosc:integer;
                    kolejka:t_el_kol;

                    //łączniki listy
                    nastepny :t_element;
                    poprzedni:t_element;
                  end;

{-------------------------PROCEDURY KOLEJEK----------------------------------}

{inicjuje zmienna kolejki}
procedure inicjuj_kolejke(var pierwszy,ostatni:t_el_kol);
begin
 pierwszy:=nil;
 ostatni:= nil;
end;

{dodaje element do kolejki}
procedure dodaj_element_do_kolejki(var pierwszy:t_el_kol; cyfra:real);
var ostatni:t_el_kol;
    n,i:integer;
begin
if pierwszy = nil then
begin
new(pierwszy);
write('ile elementow chcesz dodac: ');
    readln(n);
    for i:=1 to n do
    begin
    writeln(' dodaj element kolejki : ');
    readln(cyfra);
pierwszy^.liczba:=cyfra;
pierwszy^.nastepny:=nil;
end;
end;
if pierwszy<>nil then
begin
ostatni:=pierwszy;
while ostatni^.nastepny <> nil do
ostatni:=ostatni^.nastepny;
new(ostatni^.nastepny);
ostatni^.nastepny^.liczba:=cyfra;
ostatni^.nastepny^.nastepny:=nil;
end;
end;

{drukowanie kolejki na konsoli}

procedure wyswietl_kolejke(var pierwszy:t_el_kol);
begin
while pierwszy<>nil do
begin
write(pierwszy^.liczba:3:3, ' ');
pierwszy:=pierwszy^.nastepny;

 end;
 end;

 {usuwanie kolejki}

 procedure usun_kolejke(var pierwszy:t_el_kol);
 var
 pomocnik:t_el_kol;   // zmienna pomocnicza do usuwania kolejnych elementow
 begin
 while pierwszy<>nil do
 begin
 pomocnik:=pierwszy;   // przypisanie wartosc
 pierwszy:=pierwszy^.nastepny; // przesuniecie o jeden element w kolejce
 dispose(pomocnik);     // usuniecie "poprzedniego"
 end;
 end;




{-------------------PROCEDURY LISTY------------------------------------------}







                  {inicjuje zmienne listy}
procedure inicjuj_liste(var glowa,ogon:t_element);
begin
  glowa := nil;
  ogon  := nil;
end;

{wstawia element na koniec listy
 wejscie:glowa - glowa listy
         ogon - ogon listy
         nazw,wart - parametry dla nowo tworzonego elementu}
procedure wstaw(var glowa,ogon:t_element; nazw:string; wart:integer; pierwszy:t_el_kol; cyfra:real);
var nowy:t_element;

begin
  //utworzenie nowego elementu i przypisanie mu wartości
  new(nowy);
  writeln('podaj nazwe');
  readln(nazw);
  nowy^.nazwa    := nazw;
  writeln('podaj wartosc');
  readln(wart);
  nowy^.wartosc  := wart;
  dodaj_element_do_kolejki(pierwszy,cyfra);
  nowy^.nastepny := nil;
  nowy^.poprzedni:= nil;
  //wstawienie elementu do listy
  if ogon<>nil then
  begin
    ogon^.nastepny := nowy;
    nowy^.poprzedni:= ogon;
    nowy^.nastepny:=glowa;
  end;
  ogon := nowy;
  if glowa=nil then glowa:=ogon;
end;






{ wypisujemy cala liste }
procedure wypisz_liste(var glowa:t_element;pierwszy:t_el_kol);
var pomocniczy_wsk : t_element;
begin
    write(' ');
    if glowa <> nil then
       begin
         pomocniczy_wsk := glowa;
         repeat
           write(pomocniczy_wsk^.wartosc);
           pomocniczy_wsk :=pomocniczy_wsk^.nastepny;
           write('- ');
           wyswietl_kolejke(pierwszy);
           if pomocniczy_wsk <> nil then
              write(', ');
         until (pomocniczy_wsk = glowa) or (pomocniczy_wsk = nil);
       end;
    write(' ');

end;












var  glowa,ogon  : t_element;
     pierwszy, ostatni : t_el_kol;
     cyfra:real;
     nazw:string;
     wart:integer;


     n,i,ilosc,licznik: integer;








begin
    inicjuj_liste(glowa,ogon);
    inicjuj_kolejke(pierwszy,ostatni);
    writeln('ile elementow listy chcesz utworzyc?');
    readln(ilosc);
    for licznik:=1 to ilosc do

    wstaw(glowa,ogon, nazw, wart, pierwszy, cyfra);

    wypisz_liste(glowa,pierwszy);





    readln;
end.

jakby ktos mi wytlumaczyl co robie zle i naprowadzil/poprawil kod to bede wdzieczny:)

hmm problem jest w tym, ze zle zapisuje kolejke w rekordzie? jak to zrobic prawidlowo?:|

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