So, I made a code, where you can add or remove numbers from a list, and then displays the list. The problem is, it displays the numbers in reverse order, except the first added the number.
program obecny_seznam;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
ppolozka = ^tpolozka;
tpolozka = record
H: integer;
prev,next: ppolozka;
end;
var
poc, pom, pom2, novy, akt: ppolozka;
//--------------------------------------------------------
procedure pridej; //add
begin
if (poc = nil) and (akt = nil) then
begin
new(novy);
readln(novy^.H);
novy^.next := nil;
novy^.prev := nil;
poc := novy;
akt := novy;
end
else if akt^.next = nil then
begin
new(novy);
readln(novy^.H);
novy^.prev := nil;
novy^.next := nil;
akt^.next := novy;
novy^.prev := akt;
end
else
begin
pom := akt^.next;
new(novy);
readln(novy^.H);
novy^.prev := nil;
novy^.next := nil;
pom^.prev := novy;
novy^.next := pom;
novy^.prev := akt;
akt^.next := novy;
end;
end;
//--------------------------------------------------------
//--------------------------------------------------------
procedure uber; //remove
begin
if poc = nil then writeln('Seznam je prazdny.')
else if akt^.next = nil then
begin
dispose(poc);
akt := nil;
poc := nil;
end
else if (akt^.prev = nil) then
begin
pom := akt;
akt := akt^.next;
akt^.prev := nil;
dispose(pom);
poc := akt;
end
else
begin
pom := akt^.prev;
pom2 := akt^.next;
pom^.next := pom2;
pom2^.prev := pom;
dispose(akt);
akt := pom2;
end;
end;
//--------------------------------------------------------
//--------------------------------------------------------
procedure zobraz; //display
begin
pom := poc;
if pom <> nil then
begin
while pom <> nil do
begin
if pom = akt then writeln('*', pom^.H)
else writeln(pom^.H);
pom := pom^.next;
end;
end
else writeln('Zasobnik je prazdny.');
end;
//--------------------------------------------------------
begin
poc := nil;
akt := nil;
pridej;
pridej;
pridej;
pridej;
readln;
zobraz;
uber;
readln;
zobraz;
readln;
end.
I don’t know what else to change. If I add akt := novy at the end of add procedure than the remove procedure doesn’t function.