比赛 暑假培训五 评测结果 C
题目名称 队列基本操作 最终得分 0
用户昵称 maxiem 运行时间 0.000 s
代码语言 Pascal 内存使用 0.00 MiB
提交时间 2008-07-22 10:58:42
显示代码纯文本
program queue;
type node=record
  next,n:integer;
  use:boolean;
end;
var
  q:array [1..10] of node;
  p,code,i,last,now,head,num,n,c,d:integer;
  str:string;
  flag:boolean;
procedure print(node,n:integer);
begin
  if n<num+1 then begin
    write (q[node].n,' ');
    print(q[node].next,n+1);
  end;
end;
begin
  fillchar (q,sizeof(q),0);
  assign (input,'queue.in');
  reset (input);
  readln (n);now:=1;head:=1;
  assign (output,'queue.out');
  rewrite (output);
  for i:=1 to n do begin
    readln(str);
    if length(str)=1 then val(str,c,code) else begin
      p:=pos(' ',str);
      val(copy(str,1,p-1),c,code);
      val(copy(str,p+1,length(str)-p),d,code);
    end;
    case c of
     1:begin head:=1 end;
     2:begin
       q[now].use:=true;flag:=false;
       for i:=1 to 10 do if q[i].use=false then begin
         q[now].next:=i;flag:=true;
         break;
       end;
       if not(FLAG) then begin
         writeln ('queue out');
         close(output);
         halt;
       end;
       q[now].n:=d;
       now:=q[now].next;last:=now;inc(num);
     end;
     3:begin
       head:=q[head].next;
       if head=last then begin
         writeln ('queue empty');
         close (output);
         halt;
       end;
       dec(num);
     end;
     4:begin
       writeln(num);
       print(head,1);
     end;
    end;
  end;
  close (input);
  close (output);
end.