vinarsky_evgeny

Untitled

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