Объектно-ориентированное программирование: перевернуть список

gogi1337

Составить программу, которая переворачивает список L, т.е изменяет ссылки в этом списке так, чтобы его элементы оказались расположенными в обратном порядке.Помогите накодить.
5 ответов

gogi1337

fxd А вообще: при чем тут ооп?


gogi1337

fxd А вообще: при чем тут ооп?
бабулька у нас, преподаватель, так захотела.


gogi1337

gogi1337, надеюсь, она разрешит хотя бы в дельфи написать? Потому что на обычном паскале это будет очень печально.


gogi1337

Я ж вроде выкладывал уже недавно. Правда не в курсе, какого от Вас ооп требуют. Нужно будет с объектами - переделаете, основной код написан.
uses crt;
 
type list=^l;
 l = record
  data: integer;
  next,prev: list;
 end;
 
 var first,f: list;
     b,i,n: integer;
 
 procedure addNapr(var first,f: list; x: integer);
 var cur: list;
 begin
 
  if first=nil then
   begin
    new(cur);
    cur^.data:=x;
    cur^.prev:=nil;
    cur^.next:=nil;
    first:=cur;
    f:=first;
   end
  else
  begin
   cur:=f;
   new(cur^.next);
   cur^.next^.prev:=cur;
   cur^.next^.data:=x;
   cur:=cur^.next;
   f:=cur;
   cur^.next:=nil;
  end;
 
 end;
 
 procedure plist(first: list);
 begin
  while first<>nil do
   begin
    write(first^.data,' ');
    first:=first^.next;
   end;
  writeln;
 end;
 
 procedure back(first: list);
 var i: integer;
     last,cur: list;
 begin
  cur:=first;
  while cur^.next<>nil do
   cur:=cur^.next;
  last:=cur;
 
  while (first<>last) do
    begin
    if (first=last^.next) then
     break;
    i:=first^.data;
    first^.data:=last^.data;
    last^.data:=i;
    first:=first^.next;
    last:=last^.prev;
   end;
 end;
 
 begin
  clrscr;
  first:=nil;
  write('Количество элементов: ');
  readln(n);
  for i:=1 to n do
   begin
    readln(b);
    addnapr(first,f,b);
   end;
  writeln('Исходные элементы: ');
  plist(first);
  back(first);
  writeln('Полученные элементы: ');
  plist(first);
  readln;
 end.


gogi1337

Спасибо