参见http://expert.csdn.net/Expert/topic/2660/2660036.xml?temp=.092251

解决方案 »

  1.   

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

  2.   

    不知道你这个队列的内容是什么?
    wolf2005:
    如果单纯的字符串用TList或TStringList是一种方法
    比如字符串,TStringList.Add()实现进入
    取出TStringList[0]处理,然后TStringList.Delete(0)如果是结构体或别的什么的最好用指针先进先出处理起来是比较很简单的
      

  3.   

    如果是指针,用TList跟上面的用法差不多,只不过在Delete之前,先有把处理完的指针释放掉
      

  4.   

    你的队列多大,是存贮什么类型的? 给你写个例子长度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;
      

  5.   

    改正一下,上面的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;