[pascal] lista dynamiczna

0

Jak wstawic kolejny element na koncu list. Na razie mam cos takiego:


type EListy = ^Welisty; {wskaznik do ogniwa listy}
Welisty = record
nastepny:EListy; {wskaznik na el nastepny}
plik:SearchRec;
end;

var poczatek:EListy;

procedure dodaj(cos:SearchRec);
var nowy:EListy;
begin
new(nowy);
nowy^.plik := cos;
nowy.nastepny := poczatek.nastepny;
Poczatek^.nastepny := nowy;
end;

begin
poczatek^.nastepny := nil;
Poczatek := nil;
end.


W ten sposob nowy element jest zawsze dopinany na poczatku.

SlimY
[email protected]

--
-=[.SlimY.]=-

0

nowy.nastepny := poczatek.nastepny;
Poczatek^.nastepny := nowy;

Tu bym dał raczej:

nowy^.nastepny:=poczatek;
poczatek:=nowy;

A co do końca:

Koniec:=nil; // to na początku

a przy dodawaniu:

if koniec = nil
then koniec:=nowy;
else begin
koniec^.nastepny:=nowy;
koniec:=nowy;
end

--
Vogel [[email protected]]

Life is just a dream, you know...
[Cowboy Bebop]

0

dzieki za pomoc ale juz wybrnolem i dziala, ostatecznie zrobilem tak:

procedure dodaj3(cos:SearchRec); {dodaje na koncu listy}
var nowy,element:EListy;
begin
new(nowy);
nowy^.plik := cos;
nowy^.nastepny := nil;
element := poczatek;
while element^.nastepny nil do
element := element^.nastepny;
element^.nastepny := nowy;
end;

--
-=[.SlimY.]=-
[email protected]
gg: 1267932

0

dzieki za pomoc ale juz wybrnalem i dziala, ostatecznie zrobilem tak:

procedure dodaj3(cos:SearchRec); {dodaje na koncu listy}
var nowy,element:EListy;
begin
new(nowy);
nowy^.plik := cos;
nowy^.nastepny := nil;
element := poczatek;
while element^.nastepny nil do
element := element^.nastepny;
element^.nastepny := nowy;
end;

--
-=[.SlimY.]=-
[email protected]
gg: 1267932

--
-=[.SlimY.]=-
[email protected]
gg: 1267932

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