W jaki sposób wyświetlić elementy listy jednokierunkowej?

Odpowiedz Nowy wątek
pcus
2014-01-14 18:06
pcus
0

Witam, otoz mam pewien problem. Zrobilem liste i gdy dodaje do niej elementy to nie chcą mi się one wyświetlać, oto kod:

  procedure dodaj_do_listy(var head:Plist; typ:string);
var    p:Plist;

begin
new(p);
p^.Ptyp:= typ;
p^.next:=head;
head:=p;

end;
function ilosc(var p:Plist):cardinal;
var
  c:cardinal;
  begin
  c:=0;
  while p<>NIL do
  begin
    inc(c);
    p:=p^.next;
    end;
  ilosc:=c;
  end;

procedure pokaz(p:Plist);
var        i:integer;
begin
     writeLn('liczba elementow: ',ilosc(p));
     i:=1;
     writeln(i);
if p <> NIL then
begin
while p <> NIL do
    begin
    writeln('element #',1, ' dane = ');
    inc(i);
    p:=p^.next;
    end;
end
else
Writeln('pustalista');

end;  

Po czym ustawiam liste na nil

PPlist:Plist;
styp:string;
(....)
 PPlist:=NIL;  

Dodaje i wyswietlam tymi poleceniami. Nie chce mi to śmigać, wypisuje tylko, ze są 4 elementy tej listy, ale jakie nic sie nie wyswietla...

dodaj_do_listy(PPlist,styp);
pokaz(PPlist); 

Byłbym wdzięczny za jakieś rady, bo pewnie tu jest jakiś drobny błąd...

Pozostało 580 znaków

2014-01-14 18:12

Rejestracja: 14 lat temu

Ostatnio: 18 godzin temu

0

A gdzie kazałeś programowi wypisać "jakie" ?


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

pcus
2014-01-14 18:14
pcus
0

aa sorrki tego nie dopisałem wam

styp:='produkt'; 

Pozostało 580 znaków

2014-01-14 18:22

Rejestracja: 14 lat temu

Ostatnio: 18 godzin temu

0

Sprawdź znaczenie słowa wypisać w jakimś słowniku.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

pcus
2014-01-14 18:25
pcus
0

Jeszcze mam dodatkowo pytanie, jeśli ta lista znajdowalaby sie w rekordzie:

produkt= record
id:integer;
nazwa:string;
Rtyp:Plist;
end;

to jak wyglądałoby dodawanie takiego elementu do listy(na moim przykładzie), bo ciągle mi wyskakują błędy...

Pozostało 580 znaków

pcus
2014-01-14 18:45
pcus
0

A gdzie kazałeś programowi wypisać "jakie" ?
Procedura pokaz; jest od wypisywania całej zawartości listy? Bo nie rozumiem pytania

Pozostało 580 znaków

2014-01-14 18:46
Moderator Delphi/Pascal

Rejestracja: 8 lat temu

Ostatnio: 5 godzin temu

Lokalizacja: Tuchów

0

Jeżeli dany element listy ma przyjmować strukturę, to do pola takiej struktury mając wskaźnik na element listy odwołujesz się za pomocą operatora ^, np.:

type
  TData = record
    AName: AnsiString;
  end;

type
  PFoo = ^TFoo;
  TFoo = record
    Data: TData;
    Next: PFoo;
  end;

{...}

var
  Element: PFoo;

{...}

New(Element);

{...}

Element^.Data.Name := 'Józuś';

Po więcej informacji odsyłam do kursu, w którym dowiesz się jak korzystać ze wskaźników i struktur danych.


edytowany 1x, ostatnio: furious programming, 2014-01-14 18:47

Pozostało 580 znaków

pcus
2014-01-14 18:51
pcus
0

Podany przez Ciebie przykład nie odnosi się czasem do listy rekordow? Bo tak operować potrafie, mi chodzi o rekord list - to sprawia mi pewne problemy.

Jak wyjaśnisz sensowniej co potrzebujesz to i z odpowiedzią trafię; - furious programming 2014-01-14 18:53

Pozostało 580 znaków

pcus
2014-01-14 19:04
pcus
0

Jest lista oraz rekord

Plista=^Lista;
Lista = record
nazwa:string;
end;

produkt = record
id:integer;
dana:PLista;
end;

Teraz może będzie to jaśniejsze, jak mam dodać element do listy, która znajduje się w rekordzie(jest jednym z elementow rekordu). Bo dodać rekord w liście to nie problem.

Pozostało 580 znaków

2014-01-14 19:10

Rejestracja: 14 lat temu

Ostatnio: 18 godzin temu

0
pcus napisał(a):

A gdzie kazałeś programowi wypisać "jakie" ?
Procedura pokaz; jest od wypisywania całej zawartości listy? Bo nie rozumiem pytania

Pytam gdzie w procedurze pokaż kazałeś programowi wypisać "jakie" ?
Bo skarżyłeś się że nie wypisuje ci "jakie"


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

pcus
2014-01-14 19:42
pcus
0

Problem polega na tym, ze nie wypisuje nawet tego ciągu liter

  element #',1, ' dane = 

po dane oczywiście miało być odniesienie do stringa w liście, ale tez nie dziala

Pozostało 580 znaków

Odpowiedz

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