Есть задания по спискам, в которых я пока не разбираюсь. помогите пожалуйста
задание
Написать программу, содержащую процедуру, которая меняет местами первый
и второй элементы непустого списка.
Если элементы не найдены, то выдать на экран соответствующие сообщение.}
мой вариант решения
type
data= ^node;
node = record
digital: integer;
next: data;
end;
function init(r: data):pointer;
{заглушка, как я понял список формируется с конца(?)}
var n:integer;
begin
init:= nil; {начало с пустого списка}
read(n);
While n<>0 do begin
New®;
r^.Next:=init;
r^.digital:=n;
init:=r;
read(n);
end;
end;
procedure free(var sp: data);
begin
while (sp<>nil) do begin
dispose(sp);
end;
end;
procedure print(p:data);
var sp:data;
begin
sp:=p;
while (sp<>nil) do begin
writeln(sp^.digital);
sp:=sp^.next;
end;
end;
procedure replase(var p1, p2: pointer);
{можна ли тут использовать классический вариант без использования дополнительной переменной?}
var p:pointer;
begin
p:=p1;
p1:=p2;
p2:=p;
end;
procedure replaseFirstAndSecond(var sp: data);
begin
replase(sp, sp^.next);
end;
var
spisok: data;{может тут можна обойтись одной переменной?}
head: data;
begin
head:=init(spisok);{создаем список, head указывает на первый элемент}
replaseFirstAndSecond(head);{меняем местами}
print(head);{печать}
free(head);{освобождение памяти}
end.
вотс...