Удалить элемент, который находится в середине стека, если нечетное число элементов, а если четное, то два средних — Pascal(Паскаль)

type ptr=^element;
     element = record
          inf:integer;
          link:ptr;
     end;
var pred,p,pos:ptr;
    i,n,k,j:integer;
    a:array[byte]of byte;
begin
  read(n);
  new(p);
  read(p^.inf);
  p^.link:=nil;
  pred:=p;
  for i:=2 to n do
  begin
       new(p);
       read(p^.inf);
       p^.link:=pred;
       pred:=p;
  end;
  pos:=p;
  i:=n;
  while (p<>nil) do
  begin
        a[i]:=p^.inf;
        p:=p^.link;
        i:=i-1;
  end;
if n mod 2=0 then begin
   for j:=1 to 2 do
   begin
         for i:=(n div 2)+1 to n-1 do
         a[i]:=a[i+1];
   n:=n-1;
   end;
end else
begin
      for i:=(n div 2)+1 to n-1 do
         a[i]:=a[i+1];
         n:=n-1;
end;
pred:=nil;
for i:=1 to n do
begin
     new(p);
     p^.inf:=a[i];
     p^.link:=pred;
     pred:=p;
end;
p:=pos;
while (p<>nil) do
begin
      write(p^.inf,' ');
      p:=p^.link;
end;
end.

Leave a Comment

98 − = 94