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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2012, 19:25   #1
Тиса
Новичок
Джуниор
 
Регистрация: 23.05.2012
Сообщений: 2
По умолчанию действие с двусвязным списком

не получается инвертировать список (чтобы первый элемент стал последним и тп) и выполнить объединение списков (по логической опирации ИЛИ) посмотрите пожалуйста в чём ошибка. процедуры invert и obiedinenie ... ниже модуль
Тиса вне форума Ответить с цитированием
Старый 23.05.2012, 19:27   #2
Тиса
Новичок
Джуниор
 
Регистрация: 23.05.2012
Сообщений: 2
По умолчанию

Код:
unit sp_2_mod;

Interface
       Type 
            link = ^zveno;
            Zveno = Record
                          data : integer; 
                          Next, Pred: link;
                    End;

Procedure sozdanie(var head:link);
Procedure Print(const head:link);
procedure stseplenie(var head1, head2:link);
procedure delite_n(var head: link; const n :integer);
procedure sortirovka(var head :link);
procedure chislo_el(var head:link;var n:integer);
procedure paste_posle(var head:link;var n,data:integer);
procedure paste_in_end(const head:link;const data:integer);
procedure copy(const head1:link; var head:link);
procedure invert(const head1:link; var head2:link);
Implementation
Procedure sozdanie(var head:link);
       Var newzveno :link; i, n,code:integer;
       s:string;
       Begin
       writeln('для окончания списка введите STOP');
       	New(head);
	      head^.Next := Nil;
        head ^.pred := Nil;
	      write ('введите элемент списка: ');
        readln(head^.data);
        newzveno:=head;
        code:=0;
        repeat
         Begin

          if code<>0 then begin writeln('ERROR-введена неверная команда');break; end;
         New(newzveno^.Next);
         newzveno^.Next^.pred := newzveno;
         newzveno:=newzveno^.Next;
         newzveno^.Next:=Nil;
         write ('введите элемент списка: ');
         read(s);
         s:=UpperCAse(s);
         val(s,newzveno^.data,code);

         end;
        until s='STOP';
        newzveno^.pred^.next:=nil;
        writeln('ввод завершен');
       End;

          Procedure Print(const head:link);
       Var con : link;
       Begin
            con := head;
            Write('список  ');
            While con <> Nil Do
            Begin
               Write(con^.data, ' ');
               con := con^.Next;
            End;
          WriteLn
       End;



procedure obiedinenie(var head1,head2:link);
var con1,con2,newzveno,head:link;
    code:integer;
    Begin
         con1:=head1;
         con2:=head2;
         New(head);
         head^.Next := Nil;
         head ^.pred := Nil;
         head^.data:=con1^.data;
         newzveno:=head;
              while con1^.next<>nil do
                   begin
                       while newzveno<>nil do
                              begin
                                   if newzveno^.data<>con1^.data then
                                      begin
                                           New(newzveno^.Next);
                                           newzveno^.Next^.pred := newzveno;
                                           newzveno:=newzveno^.Next;
                                           newzveno^.Next:=Nil;
                                           newzveno^.data:=con1^.data;
                                           write('kjj')
                                      end;
                              end;
                           con1:=con1^.next;
                           newzveno:=newzveno^.next;
                      end;
                      newzveno:=head;
          //////////////////////////
                      while con2^.next<>nil do
                   begin
                       while newzveno<>nil do
                              begin
                                   if newzveno^.data<>con2^.data then
                                      begin
                                           New(newzveno^.Next);
                                           newzveno^.Next^.pred := newzveno;
                                           newzveno:=newzveno^.Next;
                                           newzveno^.Next:=Nil;
                                           newzveno^.data:=con2^.data;
                                           write('kjj')
                                      end;
                              end;
                           con2:=con2^.next;
                           newzveno:=newzveno^.next;
                      end;
                      newzveno:=head;

              writeln('объедененный');
             print(head);

    end ;
    ///////////////////////////
    
   

procedure invert(const head1:link; var head2:link);
var con,con1:link;
begin
     con1:=head1;
     con1^.pred:=con1^.next;
     con1^.next:=nil;
     while con1^.pred<>nil do
           begin
                con:=con1^.next;
                con1^.next:=con1^.pred;
                con1^.pred:=con;
                con1:=con1^.pred;
           end;
       head2:=con1
end;

 BEGIN
 ;
 END.
Тиса вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с двусвязным списком pavlintseva Помощь студентам 0 14.04.2011 18:10
Действие по времени Letnab Общие вопросы Delphi 2 20.03.2011 21:39
Калькулятор на С++ с двусвязным списком Anastassija Общие вопросы C/C++ 4 24.06.2010 11:20
выполнить действие. IVANSour Общие вопросы Delphi 6 01.02.2009 22:53