Как правильно сделать проход по кольцевой очереди?
Как правильно сделать проход по очереди для вывода информации этой очереди?
просто пробежаться по массиву от 0 до Arr_Size(длинна массива) нельзя( комментарий препода "проход по очереди надо делать не по массиву, а по ОЧЕРЕДИ, от первого в ОЧЕРЕДИ до последнего в ОЧЕРЕДИ (а не в массиве)!" Но как это сделать?
Если добавить все 3 элемента в очередь, те образовав кольцевую ситуацию,то выводиться только 1 элемент, тк First:=0 а Last:=0
Если сделать цикл от First to First+CountClient-1, то при полной очереди выводятся все элементы, но стоит 1 удалить, а затем добавить, то вывод будет только 2ух элементов, тк у нас First:=1 а First+CountClient-1:=3, те элемент под индексом "0" просто пропускается
function TBank.AddClient (Client:TClient):boolean;
begin
if (CountClient<=Arr_Size) then
begin
Clients[Last]:=Client; //добавление в конец колц.очереди
Last:=Last+1; //ув.счетчика
if (Last>Arr_Size) then begin
Last:=0; end;
inc(CountClient);
result:=true;
end else begin
result:=false; end;
end;
//----------------------------------------------------------------------
function TBank.DeleteClient :boolean;
begin
if (CountClient=0) then begin
result:=false; end
else
begin
Clients[First]:=NIL;
Clients[First].Free;
First:=First+1;
if (First>Arr_Size) then begin
First:=0;
end;
CountClient:=CountClient-1;
result:=true;
end;end;
//----------------------------------------------------------------------
function TBank.OutputFullInfo:string;
var i,c:integer;
begin
result:='';
if CountClient=0 then result:=''
else begin
for i:= first to Last do
begin
if Clients[i]<>nil then begin
result:=result+Clients[i].GetNameClient+#10#13;
result:=result+Clients[i].FullInfoOperationsWithDeposits+#10#13;
end else
end;
end;
end;