Сформировать файл целых чисел, переставить на начало файла его последний компонент — Pascal(Паскаль)

type
PNode=^Node;
Node=record
  num:integer;
  next:PNode;
end;
var
Head:PNode;
f:text;
n:integer;
 
procedure AddToSpis(var Head1:PNode;k:integer);
var
tmp:PNode;
begin
  if Head1=nil then
    begin
      New(Head1);
      tmp:=Head1;
    end
  else
    begin
      tmp:=Head1;
        while tmp^.next <> nil do
          tmp:=tmp^.next;
        New(tmp^.next);
        tmp:=tmp^.next;
    end;
     tmp^.next:=nil;
     tmp^.num:=k;
end;
 
procedure ReadFromF(var Head1:PNode;fl:text);
var
k:integer;
 
begin
  reset(fl);
   while not EOF(fl) do
     begin
       while not EOln(fl) do
         begin
          read(fl,k);
          AddToSpis(Head1,k);
         end;
       readln(f);
     end;
      close(fl);
end;
procedure Print(Head1:PNode);
begin
  if Head1=nil then
    begin
      writeln('Список пуст!');
      exit;
    end;
      while Head1 <> nil do
        begin
          write(Head1^.num:4);
          Head1:=Head1^.next;
        end;
end;
procedure ChangeF(var fl:text;Head1:PNode);
var
tmp:PNode;
begin
  rewrite(fl);
  tmp:=Head1;
    while tmp^.next <> nil do
       tmp:=tmp^.next;
    write(fl,tmp^.num:5);
    while Head1 <> tmp do
       begin
         write(fl,Head1^.num:5);
         Head1:=Head1^.next;
       end;
       
   close(fl);
end;
 
procedure FreeSpis(var Head1:PNode);
var
tmp:PNode;
begin
  while Head1 <> nil do
    begin
      tmp:=Head1;
      Head1:=Head1^.next;
      Dispose(tmp);
    end;
end;
 
 
begin
  Head:=nil;
  assign(f,'c:\t.txt');
  writeln('Данный файл');
   reset(f);
     while not EOF(f) do
        begin
          read(f,n);
          write(n:4);
        end;
  ReadFromF(Head,f);
  writeln;
  writeln('Содержимое списка');
  Print(Head);
  ChangeF(f,Head);
  FreeSpis(Head);
  writeln;
  writeln('Изменнёный файл');
   reset(f);
     while not EOF(f) do
        begin
          read(f,n);
          write(n:4);
        end;
  close(f);
end.

Leave a Comment

44 − = 36