Побудувати лінійний список, вивести його на екран та реалізувати процедури додавання елементу у список, виведення елементів списку.
Program List_Proc;
Type
Sviaz=^zveno; {Уявлення списка}
Zveno=record {Звено списка}
Elem:integer; {Інформаційна частина }
Sled:sviaz; {Наступний елемент списку}
End;
var
p,t:sviaz;
i:integer;
c:char; n:integer;
procedure Standart; {Повертання до стандартного вікна}
begin
Window(0,0,24,79);
Textbackground(black);
TextColor(white);
Clrscr;
end;
procedure Menu; {Попереджальний опис процедури}
forward;
{Ініціація списку без заглавного звена }
procedure ListInit(var tek:sviaz);
var k:integer;
begin
Standart;
writeln('Spisok iniciirovan.');
tek:=nil;
writeln('Dlia vixoda v menu nasmite ENTER');
readln;
Menu;
end;
{Додавання елементу в початок списка }
procedure DobNach(var tek:sviaz);
var k:integer;
dob:sviaz;
begin
Standart;
writeln('Vvedite elementi spiska 4erez probel do nazatia ENTER');
while not eoln do
begin
read(k);
new(dob);
dob^.elem:=k;
dob^.sled:=tek;
tek:=dob;
end;
writeln('Dlia vixoda v menu nasmite ENTER');
readln;
Menu;
end;
{Додавання елементу у кінець списку без головного звена}
procedure DobKon(var tek:sviaz);
var e:integer;
p, dob:sviaz; { dob – звено,яке додається, р – допоміжний покажчик для пошуку останньогоо елементу в списку }
begin
Standart;
new(dob);
writeln('Vvedite dobavliaemoe v konec zveno spiska ');
readln(e);
dob^.elem:=e;
dob^.sled:=nil;
if tek=nil then tek:=dob else
{пошук останнього елементу в спискі}
begin
p:=tek;
while p^.sled<>nil do p:=p^.sled;
p^.sled:=dob;
end;
writeln('Dlia vixoda v menu nasmite ENTER');
readln;
Menu;
end;
{Друк елементів списку }
procedure Print(tek:sviaz);
begin
Standart;
write('>');
while tek<>nil do
begin
write(tek^.elem);
if tek^.sled<>nil then write(',');
tek:=tek^.sled;
end;
writeln;
writeln('Dlia vixoda v menu nasmite ENTER');
readln;
Menu;
end;
{видалення усіх елементів списку}
procedure DelAll(var tek:sviaz);
var
p:sviaz;
begin
writeln(‘Udalit spisok Y/N?’);
readln ( c );
if c in [‘y’, ‘Y’, ‘n’, ‘N’] then
begin
while tek<>nil do
begin
p:=tek;
tek:=tek^.sled;
dispose(p);
end;
writeln('Spisok Udalen');
end;
writeln('Dlia vixoda v menu nazmite ENTER');
readln;
Menu;
end;
{Створення меню}
procedure Menu;
begin
clrscr;
window(20,8,60,25);
textcolor(red);
Textbackground(yellow);
clrscr;
Gotoxy(10,7);
writeln('MENU');
writeln('1- Sozdanie spiska');
writeln('2- prosmotr spiska');
writeln('3- dobavlenie elementov v na4alo spiska');
writeln('4- dobavlenie v konec spiska');
writeln('5 - Udalenie spiska');
writeln('6- Vixod');
repeat
writeln('Vash vibor');
writeln(' ' );
readln(c);
Until c in ['1','2','3','4','5','6'];
case c of
'1': ListInit(t);
'3': DobNach(t);
'2': Print(t);
'4': DobKon(t);
'5': DelAll(t);
'6': Halt;
end;
end;
{Тіло програми}
BEGIN
Standart;
Menu;
readln;
END.