Списки. Поменять местами максимальный и минимальный элементы списка. - Pascal

Узнай цену своей работы

Формулировка задачи:

Написать программу, которая меняет максимальный и минимальный элементы списка. Ребята помогите плиз сессия поджимает, как осуществить ввод списка. Тут нашел процедуры односвязный список для мин. макс. Очень нужна ваша помощь

Решение задачи: «Списки. Поменять местами максимальный и минимальный элементы списка.»

textual
Листинг программы
uses crt;
type
PNode=^Node;
Node=record
 data:integer;
 next:PNode;
end;
var
Head:PNode;
i:integer;
 
procedure AddToSpis(var Head1:PNode;k:integer);
var
tmp:PNode;
begin
  if Head1=nil then
    begin
      New(Head1);
      tmp:=Head1;
    end
  else
     begin
       tmp:=Head1;
         while tmp^.next <> nil do
           tmp:=tmp^.next;
         New(tmp^.next);
         tmp:=tmp^.next;
     end;
  tmp^.next:=nil;
  tmp^.data:=k;
end;
procedure Print(Head1:PNode);
begin
   while Head1 <> nil do
     begin
       write(Head1^.data:4);
       Head1:=Head1^.next;
     end;
end;
procedure FreeSpis(var Head1:PNode);
var
tmp:PNode;
begin
  while Head1 <> nil do
     begin
       tmp:=Head1;
       Head1:=Head1^.next;
       Dispose(tmp);
     end;
end;
procedure SearchAndChange(var Head1:PNode);
var
min,max,tmp,tmp1:PNode;
k:integer;
begin
  min:=Head1;
  max:=Head1;
  tmp1:=Head1;
    while tmp1^.next <> nil do
      begin
        tmp:=tmp1^.next;
          if tmp^.data > max^.data then
             max:=tmp;
          if tmp^.data < min^.data then
             min:=tmp;
        tmp1:=tmp1^.next;
      end;
  k:=min^.data;
  min^.data:=max^.data;
  max^.data:=k;
end;
 
begin
  Head:=nil;
    writeln('Ввод чисел, признак окончания число 99');
    read(i);
    repeat
      AddToSpis(Head,i);
      read(i);
    until i=99;
    ClrScr;
  writeln('Сформированный список');
  Print(Head);
  writeln;
  writeln('Изменнёный список');
  SearchAndChange(Head);
  Print(Head);
  FreeSpis(Head);
end.

Объяснение кода листинга программы

  1. Создается тип данных PNode, который представляет собой указатель на структуру Node.
  2. Создается переменная Head, которая является указателем на начало списка.
  3. Создается процедура AddToSpis, которая добавляет элемент в список. Если указатель на начало списка равен нулю, то создается новый элемент. В противном случае, происходит поиск конца списка и добавление нового элемента перед ним.
  4. Создается процедура Print, которая выводит элементы списка на экран.
  5. Создается процедура FreeSpis, которая освобождает память, выделенную под элементы списка.
  6. Создается процедура SearchAndChange, которая выполняет поиск максимального и минимального элементов списка и меняет их местами.
  7. В основной программе происходит ввод чисел, после чего создается список. Затем происходит поиск максимального и минимального элементов и их обмен местами. Наконец, выводится измененный список и освобождается память.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы