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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2012, 13:57   #1
*cash*
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 25
По умолчанию Однонаправленные списки

У меня почему-то неправильно работает процедура замены элемента.
У меня всегда заменяется 2-й элемент, неважно как я изменяю n

При вызове
Код:
type int=integer;
     sv=^zv;
     zv=record
        info:int;
        link:sv;
        end;
var U_s,p:sv;
    elem,i,k,n:int;


Write ('Введите номер элемента который вы хотите заменить: ');
readln(n);
Write ('Введите число которым хотите его заменить: ');
readln(elem);
zamena (U_s,elem,n);
writeln;
Writeln ('Новый список:');
vivod_spiska (U_s);
Сама процедура
Код:
Procedure zamena (U_s:sv; elem:int; n:int);
var U_z:sv;   i:int;
begin
i:=0;
U_z:=U_s; 
while U_z<>nil do begin
                  inc(i);
                  if i=n then begin
                              U_z:=U_s^.link;
                              if U_s^.link<>nil then 
                              begin
                              U_s^.link:=U_s^.link^.link;
                              dispose(U_z);
                              end; 
                              
                              new(U_z);
                              U_z^.info:=elem;
                              U_z^.link:=U_s^.link;
                              U_s^.link:=U_z; 
                              end;
                  U_z:=U_z^.link;
                  
                  end;
end;
*cash* вне форума Ответить с цитированием
Старый 30.04.2012, 14:53   #2
Borkot
Пользователь
 
Аватар для Borkot
 
Регистрация: 29.04.2012
Сообщений: 37
По умолчанию

Ребята как вы форматируете код, что он хорошо читабельный?
Borkot вне форума Ответить с цитированием
Старый 30.04.2012, 15:08   #3
Npwas
Форумчанин
 
Аватар для Npwas
 
Регистрация: 26.09.2011
Сообщений: 158
По умолчанию

Попробуй вот так просто заменяй эл-т, зачем тебе мозг парить излишне, не стоит постоянно то разрушать, то добовлять новую память!!!Просто меняй эл-т, и сохраняй указатель на голову списка!!!
Если помог, то жми на весы!!!


Код:
While U_z<>nil Do
    IF i=n Then 
         Begin
              U_z^.info:=elem;
              exit;
         End
    Else
         U_z:=U_z^.link;
<----Весы Там.
Npwas вне форума Ответить с цитированием
Старый 01.05.2012, 00:22   #4
*cash*
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 25
По умолчанию

Цитата:
Сообщение от Npwas Посмотреть сообщение
Попробуй вот так просто заменяй эл-т, зачем тебе мозг парить излишне, не стоит постоянно то разрушать, то добовлять новую память!!!Просто меняй эл-т, и сохраняй указатель на голову списка!!!
Если помог, то жми на весы!!!


Код:
While U_z<>nil Do
    IF i=n Then 
         Begin
              U_z^.info:=elem;
              exit;
         End
    Else
         U_z:=U_z^.link;
маленько видоизменил, но идею понял )))
Так и сделал ))
Все работает )) Ок )))
Спасибо )))
*cash* вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Однонаправленные списки. tema654 Общие вопросы C/C++ 3 29.12.2011 14:49
Однонаправленные линейные списки Lubawa Паскаль, Turbo Pascal, PascalABC.NET 4 07.11.2011 16:21
однонаправленные списки в C Edemchik Помощь студентам 1 21.05.2011 17:50
Однонаправленные списки Цветик Общие вопросы C/C++ 3 22.11.2010 15:09
Однонаправленные списки в си Марсель059 C++ Builder 18 27.11.2009 13:16