vinarsky_evgeny

Untitled

Dec 7th, 2015
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.38 KB | None | 0 0
  1. program queue3(input,output);
  2. type
  3.     list=^node;
  4.     node=record
  5.           elem: integer;
  6.           next: list
  7.          end;
  8.     queue=record
  9.             start: list;
  10.             fin: list
  11.           end;
  12.  
  13. procedure init(var q: queue);
  14.   begin
  15.       q.start:=nil;
  16.       q.fin:=nil
  17.   end;
  18.  
  19. function isempty(var q: queue): boolean;
  20.   begin
  21.     isempty:=q.start=nil;
  22.   end;
  23.  
  24. procedure pushQ(var q: queue; e: integer);
  25. var p: list;  
  26.   begin
  27.     new(p);
  28.     p^.elem:=e;
  29.     p^.next:=nil;
  30.     with q do
  31.       begin
  32.         if(start=nil) then
  33.           start:=p
  34.         else
  35.           fin^.next:=p;
  36.         fin:=p;
  37.       end;
  38.   end;
  39.  
  40. procedure popQ(var q: queue; e: integer);
  41. var p: list;
  42.   begin
  43.    if(isempty(q)) then
  44.     write('error')
  45.    else
  46.     begin
  47.       e:=q.start^.elem;
  48.       p:=q.start;
  49.       q.start:=q.start^.next;
  50.       dispose(p);
  51.       if(q.start=nil) then q.fin:=nil;
  52.     end;
  53.   end;
  54.  
  55. var f: file of integer;
  56.     c,d: integer;
  57.     och: queue;
  58. begin
  59.   assign(f,'input.txt');
  60.   read(c);
  61.   rewrite(f);
  62.   while(c<>0) do
  63.     begin
  64.       if(c<0) then
  65.         write(f,c)
  66.       else
  67.         pushQ(och,c);
  68.       read(c);
  69.     end;
  70.   reset(f);
  71.   while(not(eof(f))) do
  72.     begin
  73.       read(f,d);
  74.       write(d,' ');
  75.     end;
  76.   while(not(isempty(och))) do
  77.     begin
  78.       popQ(och,c);
  79.       write(c,' ');
  80.     end;
  81. end.
Advertisement
Add Comment
Please, Sign In to add comment