Uses Crt;
|
|
|
|
Type PList = ^ List;
| { описание элемента хранения узла списка и }
|
List = record
| { указателя на узел списка }
|
info: word; link: plist;
|
|
end;
|
|
|
|
var f: PList; cod,n: byte; sum: word;
|
|
|
|
Procedure Create1(var first: PList;
n: byte);
var p: PList; i: byte;
begin
first:=nil;
| { first – указатель на первый узел списка }
{ n – количество узлов в списке }
{ создание пустого списка }
|
for i:=1 to n do begin
|
|
new(p);
| { создание узла списка }
|
write(‘Значение инф. поля‘, i, ‘-го элемента списка = ‘);
|
|
readln(p^.info);
| { заполнение информационного поля узла }
|
p^.link:=first;
| { установка связи между вставленным узлом и списком }
|
first:=p;
| { новое значение указателя на первый узел }
|
end;
end;
|
|
|
|
Procedure Print(first: PList);
| { просмотр информац. полей узлов списка }
|
var p: PList; i: byte;
|
|
begin i:=0;
|
|
while (p <> nil) do begin
|
|
inc(i);
|
|
writeln(‘Информационное поле ‘, i, ‘-го элемента списка = ‘, p^.info);
|
|
p:=p^.link;
|
|
end;
|
|
end;
|
|
|
|
Procedure Work(first: PList; var s: word);
| { суммирование значений информ. }
|
var p: PList;
| { полей узлов списка }
|
begin s:=0;
|
|
while (p <> nil) do begin
|
|
s:=s+p^.info; p:=p^.link;
|
|
end;
|
|
end;
|
|
|
|
Procedure Destroy(var first: PList);
| { разрушение списка }
|
begin
|
|
...
|
|
end;
|
|
|
|
Procedure Message;
| { вспомогательная процедура }
|
begin
|
|
writeln(‘Список пуст‘); write(‘Нажмите любую клавишу‘); readkey
|
|
end;
|
|
|
|
begin
|
|
f:=nil;
| { первоначально список пуст }
|
repeat Clrscr;
|
|
writeln(‘1-Создание 2-Просмотр 3–Обработка 4–Разрушение 5-Выход‘);
|
|
write(‘Код действия = ‘); readln(cod);
|
|
case cod of
|
|
1: begin
| { создание списка }
|
write(‘Количество узлов в списке = ‘); readln(n);
|
|
Сreate(f,n); write(‘Нажмите любую клавишу‘); readkey
|
|
end;
|
|
2: begin
| { просмотр списка }
|
if f=nil then Message
|
|
else begin
|
|
Print(f); write(‘Нажмите любую клавишу‘); readkey
|
|
end;
|
|
3: begin
| { обработка списка }
|
if f=nil then Message
|
|
else begin
|
|
Work(f,sum); writeln(‘Сумма значений инф. полей = ‘, sum);
|
|
write(‘Нажмите любую клавишу‘); readkey
|
|
end;
|
|
4: begin
| { разрушение списка }
|
if f=nil then Message
|
|
else begin
|
|
Destroy(f); writeln(‘Список разрушен‘);
|
|
write(‘Нажмите любую клавишу‘); readkey
|
|
end;
|
|
5: Destroy(f)
| { выход }
|
end;
|
|
until (cod = 5); Clrscr
|
|
end.
|
|
| | | | | | |