回 帖 发 新 帖 刷新版面

主题:急求一循环队列的程序,用C#或者Pascal编写的均可

内容为:利用数组建立一个循环队列,从键盘读入m个整数,每读入一个整数就放入队列中,然后完成出队任务使得每次出队前先访问队头结点(即将队头结点的数据域值输出)。

   步骤为:1)建立长度(容量)为m的空队,队列元素下标为1~m;设对头指针为front,队尾指针为bottom。
           2)编写入队过程、出队过程和读队过程,注意设定判断队满、队空的条件;
           3)上机调试,给定数据序列运行程序。假设要建立有8个元素的循环队列,队列容量m应该是多大?队头指针和队尾指针的值各是多少?
           4)建立有8个元素的循环队列,然后出队,其结果是否符合“先进先出”的特征?
    最好是Pascal写的,因为学计算机软件技术基础,但以前根本没有学过C#或是Pascal,所以麻烦高手指点,不胜感激!!

回复列表 (共2个回复)

沙发

3)  8
4)  yes.

program try;
const m=8;
var a:array [1..m] of longint;
    i,j,k,n,front,bottom:longint;
begin
  front:=0;
  bottom:=0;
  readln(n);
  for i:=1 to n do
  begin
    read(j);
    if j=1 then
    begin
      readln(k);
      inc(bottom);
      a[bottom]:=k;
    end
           else
    begin
      inc(front);
      writeln(a[front]);
    end;
  end;
end.
判断队列是否为空:front=bottom。

板凳

PS:我上面程序的输入:
第一行为命令条数n;
第2~n+1行:每行共2个数,其中第一个数为命令数,第二个为操作数。(命令数就是说明到底是要读数还是输出,1为读书,其余的数为输出)

我来回复

您尚未登录,请登录后再回复。点此登录或注册