Динамические структуры данных. Задание практикума. Язык Паскаль. Вылиток А.А - 30 стр.

UptoLike

- 30 -
while not eoln do
begin {добавляем в список следующее звено}
new(p.next); read(p.next.elem );
p:=p.next
{p указывает на добавленное звено }
end;
{ последнее звено должно иметь ссылку nil }
p.next:=nil
end ;
readln {пропускаем маркер конца строки}
end;
Задача 2. Описать процедуру print(L), которая печатает все элементы списка
L. Тип элементовchar.
Решение
procedure print(L:list);
{печатает в файл output строку из элементов списка L}
begin
while L<>nil do
begin write(L.elem);
L:=L.next
end;
writeln
end;
Рекурсивное решение было приведено в разделе «Рекурсивная обработка
списков».
Задача 3. Описать процедуру exchange(L), которая меняет первый и
последний элементы непустого списка L.
Решение
procedure exchange(L:list);
{ меняет местами элементы первого
и последнего звеньев
непустого списка L}
var e: elemtype;
p: link;
begin
p:=L; {находим последнее звено}
while p.next<>nil do p:=p.next;
{теперь p указывет на последнее звено;
L указывает на первое}
{меняем местами первый и последний элементы}
e:=L.elem; L.elem:=p.elem; p.elem:=e
end;
      while not eoln do
        begin {добавляем в список следующее звено}
         new(p↑.next); read(p↑.next↑.elem );
         p:=p↑.next
         {p указывает на добавленное звено }
        end;
      { последнее звено должно иметь ссылку nil }
      p↑.next:=nil
     end ;
     readln {пропускаем маркер конца строки}
 end;



Задача 2. Описать процедуру print(L), которая печатает все элементы списка
L. Тип элементов – char.
                                Решение
procedure print(L:list);
{печатает в файл output строку из элементов списка L}
begin
 while L<>nil do
  begin write(L↑.elem);
        L:=L↑.next
  end;
 writeln
end;
Рекурсивное решение было приведено в разделе «Рекурсивная обработка
списков».

Задача 3. Описать процедуру exchange(L), которая меняет первый и
последний элементы непустого списка L.
                                Решение
procedure exchange(L:list);
{ меняет местами элементы первого и последнего звеньев
  непустого списка L}
var e: elemtype;
    p: link;
begin
  p:=L; {находим последнее звено}
  while p↑.next<>nil do p:=p↑.next;
  {теперь p указывет на последнее звено;
   L указывает на первое}
  {меняем местами первый и последний элементы}
    e:=L↑.elem; L↑.elem:=p↑.elem; p↑.elem:=e
end;

                                  - 30 -