Цитата(helflip @ 21.11.2008, 14:55 ) | | Подскажите как вывести кольцевой список в обратном порядке? |
Ты сначала заполни список правильно, и научись его выводить в прямом порядке, а потом будешь браться за обратный..
Вот так примерно:
| Код | program P1; Uses Crt;
type te = Integer; pe = ^el; el = record inf: te; next:pe; end;
{ Var menu: byte; }
procedure AddNode(var root: pe; X: integer); var T1, T2: pe; begin if root = nil then begin new(root); root^.inf := X; root^.next := root; exit; end;
new(T1); T2 := root; while T2^.next <> root do T2 := T2^.next; T1^.next := root; T2^.next := T1; T1^.inf := X; end;
Procedure CreateRing(var root: pe); var a, i: te; Begin clrscr; writeln('Procedura Vvoda LOS.'); writeln('Dlya vihoda vvedite 0 i nazmite Enter.'); i := 1; repeat write('Vvedite ', i, '-ii element LOS:'); ReadLn(a); if a <> 0 then AddNode(root, a); until a = 0; end;
procedure Output(root: pe); var T: pe; begin if root = nil then begin writeLn('Ring is empty!'); exit; end; T := root;
repeat write(T^.inf:5); T := T^.next; until T = root; writeln; end;
procedure ReverseOutput(root: pe);
procedure reverse(R: pe); begin if R^.next <> root then reverse(R^.next); write(R^.inf:5); end;
begin if (root = nil) then begin writeln('Ring is empty'); exit end; reverse(root); writeln; end;
var root: pe;
begin root := nil; CreateRing(root); output(root); reverseoutput(root); end. |
|