参见http://expert.csdn.net/Expert/TopicView1.asp?id=2660036

解决方案 »

  1.   

    先进先出用TList或TStringList是一种方法
    比如字符串,TStringList.Add()实现进入
    取出TStringList[0]处理,然后TStringList.Delete(0)
      

  2.   

    这个课本上不是有吗队列是先进先出的数据结构,队列也可以用一维数组或链表作存储结构。队运算中要使用两个指向队头和队尾的指针变量top1、bottom,最后进队元素的指针等于队头指针top1,队中最先进队元素的指针等于队尾指针bottom,当top1=bottom时队空,初始条件为top1=bottom=0,当top1+1=bottom(数组)或a(top1).next=bottom(链表)时队满。有元素进队时top1=top1+1(数组)或top1=a(top1).next(链表);有元素出队时bottom=bottom+1(数组)或bottom = a(bottom).next(链表)
      

  3.   

    你的队列多大,是存贮什么类型的? 给你写个例子长度10个元素,存贮整形  TQueue = class
      private
       FQueue:array[1..10] of integer;
       CurentRearPos:integer;
       NumOfElem:integer;
      protected
       procedure InitQueue;
      public
       constructor Create;
       procedure pushelem(value:integer);
       function popelem:integer;
      end;constructor TQueue.Create;
    begin
     InitQueue;
    end;procedure TQueue.InitQueue;
    var
     i:integer;
    begin
     for i:=1 to 10 do FQueue[i]:=0;
     CurentRearPos:=1;NumOfElem:=0;
    end;function TQueue.popelem: integer;
    begin
     if NumOfElem>0 then
     begin
      result:=FQueue[1];
      Dec(CurentRearPos);Dec(NumOfElem);
     end
     else
      raise Exception.Create('The Queue is empty.');
    end;procedure TQueue.pushelem(value:integer);
    begin
     if NumOfElem<10 then
     begin
      FQueue[CurentRearPos]:=Value;
      inc(NumOfElem);inc(CurentRearPos);
     end
     else
      raise Exception.Create('The Queue is full.');
    end;
      

  4.   

    改正一下,上面的popelem函数有点错,改正如下:
    function TQueue.popelem: integer;
    var
     i:integer;
    begin
     if NumOfElem>0 then
     begin
      result:=FQueue[1];
      for i:=1 to CurentRearPos-1 do
       FQueue[i]:=FQueue[i+1];
      Dec(CurentRearPos);Dec(NumOfElem);
     end
     else
      raise Exception.Create('The Queue is empty.');
    end;