Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lab4_var6_z1

.pas
Скачиваний:
9
Добавлен:
09.05.2015
Размер:
2 Кб
Скачать
{Используйте линейные списки для хранения последователь-
ности чисел. Опишите процедуру или функцию, которая для
данного списка L создает список L1, содержащий те же эле-
менты, но в обратном порядке}  

Program lab4_var6_z1;

Type 
link=^node;
node=record num:integer; next:link end; // тип описывает запись состоящую из числа и указателя на запись
var S, //ссылка на очерeдное звено
    L,L1:link; //списки с исходной последовательностью и обратной
N // N-количество чисел
,i:byte; //счетчик
x:integer;//переменная для ввода чисел

procedure out_spisok(l : link); //процедура вывода списка на экран
begin
while l<> nil do
     begin
      s:=l^.next;
      write(l^.num,' ');
      l:=s;
     end;
writeln;
end;

//процедура формирования исходного списка путем добавления элемента в конец линейного списка
procedure add(var l:link;m:integer);
var t,p:link;
begin
  if l=nil then begin 
                  new(l); 
                  l^.num:=m;
                  l^.next:=nil;
                end
  else begin
        t:=l;
        while t^.next<>nil do t:=t^.next;
        new(p); 
        t^.next:=p; 
        p^.num:=m; 
        p^.next:=nil;
       end;
end;

//Процедура формирования обратного списка
procedure Rev(var S1,S2:link); 
begin
while S1<>nil do 
  begin
    new(S2);
    S2^.next:=S;
    S2^.num:=S1^.num;
    S:=S2;
    S1:=S1^.next;
  end;
end;

//процедура освобождения динамической памяти
procedure Clear(var L:link); 
begin
while L<> nil do 
begin
s:=L^.next;
dispose(L);
L:=s;
end;
end;

BEGIN
Repeat 
Writeln('Введите N(количество чисел) > 1 ');
Readln(N);
Until N>1;

//Создание списка
S:=nil;
For i:=1 to N do 
 begin
  Writeln('Введите ',i,'-e число:');
  readln(x);
  add(L,x);
  end;

writeln('Введенный список L:');
out_spisok(L);

Rev(L,L1);

writeln('Обратный список L1:');
out_spisok(L1);

//освобождаем динамическую память}
clear(L);
clear(L1);

END.                                                                                                                     
Соседние файлы в предмете Основы алгоритмизации и программирования