Mam do wykonania zadanie na jutro.
Zdefiniuj typ rekordowy dla listy jedno kierunkowej do tyłu i jedno kierunkowej do przodu. Czy czymś się będą różniły?
Zaimplementuj procedurę dodawania do listy jednokierunkowej do przodu za elementem podanym jako argument, jeżeli element = nil twórz listę.
Zaimplementuj funkcję odczytywania pojedynczego elementu oraz odczytywania całej listy jednokierunkowej na ekran.
Zaimplementuj procedurę usuwania dowolnego elementu listy jednokierunkowej.
Zademonstruj działanie powyższych funkcji w programie który:Stworzy i wyświetli listę 30 elementów typu int ułożonych w następujący sposób 1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3 Doda do listy elementy o wartości 4 po elementach o wartości 3. Następnie wyświetli listę. Odczyta co piąty element listy. Wszystkie jedynki przeniesie do osobnej listy. Wyświetli obie listy.
Kod jaki obecnie posiadam:
program zad5;
uses crt;
type
wskaznik=^element;
element=record
dana:integer;
next:wskaznik;
end;
var
first,jedynki:wskaznik;
ne:integer;
i:byte;
procedure insert_node(var f:wskaznik; a:integer);
var
prev, p,nowy:wskaznik;
begin
new(nowy);
nowy^.dana:=a;
nowy^.next:=nil;
if f^.dana>a then
begin
nowy^.next:=f;
f:=nowy;
exit;
end;
p:=f;
while (p^.dana<=a) do
begin
prev:=p;
p:=p^.next;
if p=nil then
begin
prev^.next:=nowy;
exit;
end;
end;
nowy^.next:=prev^.next;
prev^.next:=nowy;
end;
procedure delete_node(var f:wskaznik; a:integer);
var
p,prev,tmp:wskaznik;
begin
if f^.dana=a then
begin
tmp:=f^.next;
dispose(f);
f:=tmp;
exit;
end;
p:=f;
repeat
prev:=p;
p:=p^.next;
if p=nil then exit;
until p^.dana=a;
prev^.next:=p^.next;
dispose(p);
end;
procedure create (var f:wskaznik; a:integer);
var
nowy:wskaznik;
begin
if f=nil then
begin
new(nowy);
nowy^.next:=nil;
nowy^.dana:=a;
f:=nowy;
end
else
insert_node(f,a);
end;
procedure remove (var f:wskaznik);
var
tmp:wskaznik;
begin
while f<> nil do
begin
tmp:=f^.next;
dispose(f);
f:=tmp;
end;
end;
procedure show (f:wskaznik);
begin
while f<> nil do
begin
write(f^.dana,',');
f:=f^.next;
end;
writeln;
end;
procedure wyswietl5 (f:wskaznik);
begin
while f<> nil do
begin
write(f^.dana:3);
f:=f^.next;
end;
writeln;
end;
begin
clrscr;
writeln('Dostepna pamiec: ',memavail);
for i:=1 to 10 do
begin
for ne:=1 to 3 do
create(first,ne);
end;
show(first);
for i:=1 to 10 do
insert_node(first,4);
show(first);
{i:=5;
while i<36 do
co5;
i:=i+5;
}
{insert_node(first,6);
show(first);
insert_node(first,0);
show(first);
delete_node(first,0);
show(first);}
remove(first);
writeln('Pam: ',MemAvail);
readln;
end.
Problem jest taki, że nie mam pojęcia jak zrobić aby ten kod umożliwił wyświetlenie zadania. Kod był zaczerpnięty z wykładu prowadzonego przez mojego wykładowcę.
dodanie znacznika <code class="pascal">
- @furious programming