Wyświetlenie wybranych elementów listy jednokierunkowej

0

witam, potrzebuje pomocy, gdyz nie potrafie zmodyfikowac procedury, ktora mi wyswietli z listy tylko elementy ktore ja chce

PROCEDURE Wyswietl;
VAR
 wsk:wskaznik;
BEGIN
 IF pierwszy = NIL
  THEN Write('Lista jest pusta!')
  ELSE BEGIN
        wsk := pierwszy;
        Writeln(wsk^.liczba);
        WHILE wsk^.next <> NIL
         DO BEGIN
             wsk := wsk^.next;
             Writeln(wsk^.liczba);
            END;
       END;
 ReadKey;
END; 
1
type czyChce = function(wsk:wskaznik):Boolean;

procedure Wyswietl(wsk:pierwszy;fun:czyChce);
var wsk:wskaznik;
begin
  if pierwszy=nil then Write('Lista jest pusta!')
  else
  begin
    wsk:=pierwszy;
    while wsk<>nil do
    begin
      if fun(wsk) then Writeln(wsk^.liczba);
      wsk:=wsk^.next;
    end;
  end;
end;
0

@zupaaa - a które elementy chcesz?

Jeśli przeraża Cię przekazywanie funkcji jako argumentu, po pierwsze skorzystaj z konstrukcji jaką podał poprzednik (chodzi o pętlę While), a po drugie wstaw sobie w miejsce wywołania funkcji fun jakiś swój warunek, sprawdzający wartość z aktualnie trzymanego we wskaźniku węzła listy;

Zrób jak chcesz, byle byś zrozumiał jak to ma działać.

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