Fila estÁtica circular

bem estou com dúvidas sobre esse tipo abstrato de dados
FILA ESTÁTICA CIRCULAR

o que eu imagino é
                             
                            f=0;
                            i =0;                   
                            1   10
                           [0] [9]
                       2[1]        [8] 9
                    3[2]            [7] 8
                     4 [3]        [6] 7
                           [4] [5]
                            5    6

                          
bem fiz um desenho para ficar mais fácil o entedimento,[] representa um array e o que está dentro dos cochetes é o índice em que o array se encontra tipo array no índice 5= [5] e os números que eu coloquei do lado e abaixo do array são os valores que esse array está recebendo tipo 
array[0]=1 que dizer array no índice 0 recebe 1 ou array[6]=7,
bem eu aprendi fila tem uma semana mas não estou compreendendo
sua estrutura, esse i que dizer ínicio e o f quer dizer fim, quando o i=f
que dizer que a pilha está vazia pois ambos estão na posição 0 do vetor
certo...?
bem:

                          f=0;     //está na índice 0 do array   
                          1   10
                         [0] [9]
                     2 [1]     [8] 9
   i=2            3[2]          [7] 8
                     4 [3]       [6] 7
                           [4] [5]
                            5    6
a única coisa que eu sei é que quando f=i a pilha está vazia o resto eu gostaria que vcs me ajudassem a enteder! bem neste segundo desenho que eu fiz como f está no índice 0 e i está no índice 2 eu acho que nos temos somente um valor enfileirado que é do índice 1 pois o único que ficou foi 2 POR FAVOR SE EU ESTIVER ERRADO ME CORRIJAM..!
a outra hipotase na mesma situação é que array no indíce 1 e 2 estão enfileirados cetro..???POR FAVOR SE EU ESTIVER ERRADO ME CORRIJAM..! a última hitopase que eu tenho é a que eu mais acredito que esteja certa...!
bem a pilha so vai estar cheia novamente quando o i der a volta completa 
na circuferencia e ficar uma posição atraz do fim, tipo

                          f=0;     //está na índice 0 do array   
                          1   10
                         [0] [9]
                     2 [1]      [8] 9 i=8//i está na posição 8 do array
                     3[2]          [7] 8
                     4 [3]       [6] 7
                           [4] [5]
                            5    6
bem como o vetor é estático se ocuparmos todos os índices não teria lógica em fazer uma estrutura tipo circuferência, ai tempos que sempre deixar um indice sobrando entre o i e o f para que seja inserido novamente os dados e que possa fazer a volta novamente neste caso estão enfileirados os índices 0,1.2;3,4,5,6,7,8 mas é o índice 9 que recebeu 10 onde ele fica...?

POR FAVOR QUEM CONHECE A ESTRUTURA ME AJUDE JÁ VI EM APOSTILAS MAIS NÃO COMPREENDI.

Eu estou estudando isso agora na faculdade. Quer dizer, meu professor teve que se afastar por problemas de saúde, então ainda só tive uma aula teórica.
Se eu aprender como trabalhar com esse tipo TDA, eu posto aqui.

Na teoria, uma pilha segue o conceito de “LIFO” Last in First Out, ou seja, a última entrada vai ser a primeira a ser acessada, e você não pode acessar a entrada [5] sem passar antes pela [6]. Agora numa pilha “circular” não sei como deve funcionar.

“Topo da pilha” = Último índice “preenchido” do array .
Uma pilha está vazia quando o seu topo for 0. Se ela ainda não foi criada, ela não existe (dferente de vazia).
Uma pilha está cheia quanto o seu topo é igual ao máximo-1.

so que essa estrutura não é pilha é fila é totalmente diferente…!
fila é uma estrutura de dados do tipo(first in,first-out) primeiro a entrar primeiro a sair a pilha é ultimo a entrar é o primeiro a sair é bem diferente…!

Ops, li errado :oops: .

Estou aprendendo agora sobre filas também, mas estou ainda em fila estática com movimentação de ponteiro na inserção (em C). Próxima assunto são as circulares.

Pelo que deu pra entender, quando chegar no último espaço, ele vai apontar para o primeiro. Mas também não faço idéia de como fazer isso em Java.