Wskaźniki w procedurze

0

Witam,
napisałem procedurę, która ma dodać nowy element do listy jednokierunkowej.

Utworzyłem dwa typy zmiennych:

type wskLista = ^element; 
	element = record 
		wartosc : integer; 
		nast : wskLista; 
	end; 
	
type 
	lista = record
		rekordow : Integer;
		pier_element : ^element;
		ost_element : ^element;
	end;

Gdy chcę dodać pierwszy rekord w programie mam taki kod:

var el:element;
var kolejka:lista;

el.wartosc := 1234;
	
kolejka.pier_element := @el;
kolejka.rekordow := 1;

W ten sposób wszystko jest ok - w liście pojawił się 1 element.

Jednak, podobny kod (różnica jest tylko taka, że zamiast 'kolejka' jest wskaźnik na listę) w procedurze nie dodaje elementu:

	procedure dodaj_na_poczatek(kolejka : wsk_na_liste; x : integer);
	var el : element;
	begin
		el.wartosc := 123;
		kolejka^.pier_element := @el;
		kolejka^.rekordow := 1;
	end;

Jednak liczba rekordów ulega zmianie (ostatnia linijka), więc problem jest w przypisywaniu wskaźnika w przedostatniej linijce ciała procedury.

Jak mogę rozwiązać ten problem?
Pozdrawiam :)

1

Spróbuj tak:

 
        procedure dodaj_na_poczatek(kolejka : wsk_na_liste; x : integer);
        var el : element;
        begin
                new(el);
                el.wartosc := 123;
                el.nast := nil;
                kolejka^.pier_element := @el;
                kolejka^.rekordow := 1;
        end;

Ew.tak:

 
        procedure dodaj_na_poczatek(kolejka : wsk_na_liste; x : integer);
        var el : wskLista;
        begin
                new(el);
                el^.wartosc := 123;
                el^.nast := nil;
                kolejka^.pier_element := el;
                kolejka^.rekordow := 1;
        end;
0
  1. zacznij nazywać zmienne wg konwencji pascalowej
type 
  TElement = record 
     wartosc : integer; 
     nast : PElement; 
  end; 
  PElement = ^TElement; 
 
  TLista = record
     rekordow : Integer;
     pier_element : PElement;
     ost_element : PElement;
   end;

i teraz zobacz co gdzie masz przypisywać. BTW jest od metra artykułów na necie o wskaźnikach (min. listy, stosy, kolejki) w pascalu do których nawet nie zaglądałeś bo to po prostu widać po twoim kodzie.

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