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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2011, 15:38   #1
Pavel_4a-4anax
 
Регистрация: 06.04.2011
Сообщений: 5
По умолчанию Списки.

Добавить в конец списка L1 все элементы списка L2
Вот наброски.

Код:
Program spiski;
uses crt;
Type Tinf=Char;
                    TP=^Telem;
                    Telem=Record
                    inf:Tinf;
                     pSled:TP
     End;

Procedure Init(Var head:TP);
Begin
      head:=NIL
End;

Procedure InitZ(infEl:Tinf; Var head:TP);
Begin
      New(head);
      head^.inf:=infEl;
      head^.pSled:=NIL;
End;


Procedure InSpP(infEl:Tinf; Var pred:TP);
Var pn:TP;
Begin
  If pred<>NIL
    Then Begin
         New(pn);
         pn^.inf:=infEl;
         pn^.pSled:=pred^.pSled;
         pred^.pSled:=pn;
         pred:=pn;
       End;
End;

Procedure SozdSpP(Var head:TP);
Var s:Char; pred:TP;
Begin
      InitZ('^',head);
      pred:=head;
      WriteLn('Вводите символы! Признак конца ввода * ');
      Repeat
        Read(s);
        If s<>'*'
        Then InSpP(s,pred)
      Until s='*';
      ReadLn
End;

Procedure ProsmSp(head:TP);
Var pt:TP;
Begin
  If head=NIL
  Then Begin
         WriteLn('Список пуст!');
         Write('Нажмите Enter ->');
         ReadLn; Exit;
       End;
  WriteLn('элементы списка:');
   pt:=head;
  While pt<>NIL
  Do Begin
       Write(pt^.inf);
       pt:=pt^.pSled;
     End;
  WriteLn;
End;

Procedure OutSpN(Var head:TP);
Var pu:TP;
Begin
  If head<>NIL
  Then Begin
         pu:=head;
         head:=head^.pSled;
         Dispose(pu);
       End;
End;
Procedure form (head1,head2:TP; var head:TP);
var
   tec1,tec:TP;
   begin
        while head1<>Nil do
        begin
             tec1:=head1^.psled;
             while tec1<>nil do
             if tec1^.inf=head1^.inf then break;
             if tec1=nil then  InSpP(head1^.inf,head);
             head1:=head1^.psled;
        end;
        while head2<>nil do
        begin
             tec:=head;
             while tec<>nil do
             if tec^.inf=head2^.inf then break;
             if tec=nil then inSpP(head2^.inf,head);
             head2:=head2^.psled;
        end;
   end;


Var head,head1,head2:TP;
infEl:Tinf;
Begin
        Init( head);
        InitZ('^',head);
     InSpP(infEl, head);
    SozdSpP(head1);
    writeln('L1:');
    ProsmSp(head1);
    write;
    SozdSpP(head2);
    writeln('L2:');
    ProsmSp(head2);
    write;
    Write('После удаления ');
    form (head1,head2,head);
    ProsmSp(head);
    writeln;
End.
Pavel_4a-4anax вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Списки kapriz5 Паскаль, Turbo Pascal, PascalABC.NET 3 19.02.2012 09:41
Списки. Skyriver Помощь студентам 1 16.06.2010 00:21
Списки Хорнет Паскаль, Turbo Pascal, PascalABC.NET 0 09.06.2010 09:55
(Си) Списки Dartchuwak Помощь студентам 2 12.01.2010 00:52