Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2018, 00:52   #1
Kamelok
Пользователь
 
Регистрация: 19.11.2017
Сообщений: 36
По умолчанию [Pascal] Добавить элемент.

Здравствуйте, как добавить в список после максимального элемента минимальной. Программа работает только меняет их местами, а не как надо мне.
Код:
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;
  k:=max^.data;
end;
 
begin
  Head:=nil;
    writeln('Ввод чисел, признак окончания число 0 ');
    read(i);
    repeat
      AddToSpis(Head,i);
      read(i);
    until i=0;
    ClrScr;
  writeln('Сформированный список');
  Print(Head);
  writeln;
  writeln('Изменнёный список');
  SearchAndChange(Head);
  Print(Head);
  FreeSpis(Head);
end.

Последний раз редактировалось Kamelok; 22.05.2018 в 13:02.
Kamelok вне форума Ответить с цитированием
Старый 22.05.2018, 17:23   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Kamelok Посмотреть сообщение
Программа работает только меняет их местами, а не как надо мне.
не меняет. в ней ошибка.

надо вместо
Цитата:
Сообщение от Kamelok Посмотреть сообщение
Код:
k:=max^.data;
написать
Код:
max^.data:=k;

Цитата:
Сообщение от Kamelok Посмотреть сообщение
Здравствуйте, как добавить в список после максимального элемента минимальной
поясните, а что должно произойти с самим минимальным?
если дана очередь
5 2 17 3 4
что должно получиться в итоге?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.05.2018, 22:11   #3
Kamelok
Пользователь
 
Регистрация: 19.11.2017
Сообщений: 36
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
поясните, а что должно произойти с самим минимальным?
если дана очередь
5 2 17 3 4
что должно получиться в итоге?
5 17 2 3 4

После максимального должно написать минимальное
Kamelok вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить элемент в начало списка. Юлия1997 Помощь студентам 0 23.10.2016 22:30
Добавить элемент с номером К в файл С++ Sofia SLON Помощь студентам 7 14.02.2016 14:00
Добавить элемент в коллекцию Juli174 C# (си шарп) 1 11.12.2013 13:45
добавить/удалить элемент Revenholm Общие вопросы C/C++ 3 13.06.2009 17:17
Добавить элемент в массив MAKEDON Общие вопросы C/C++ 2 23.03.2009 18:47