Estrutura de Dados - Duvidas com Deque

Boa tarde,
tenho aqui algumas duvidas, quanto ao entendimento de Deque.
Deque tem alguns metodos como: addFirst(E e); addLast(E e); removeFirst(); removeLast();

addFirst - Insere o objeto passado na frente:
addFirst(5);
addFirst(7);
addFirst(0);

saída: [0][7][5] até ai tudo bem;

quando vou usar o addLast onde deve ser inserido? contanto que ja tenha isso: [0][7][5]

seria no fim do deque? [0][7][5] [insere aqui]

pesquisei alguns exemplos e so tenho esse retorno:

addFirst(5);
addFirst(7);
addFirst(0);

saída: [0][7][5]

quando uso o addLast me retorna isso:

addLast(20);

[20][0][7][5]

e assim por diante.

Está certo esse conceito?

Use o método “escreva um pequeno programa” ou “escreva um Hello World”.
Rodando o seguinte programa, vi que você não entendeu direito o conceito de deque.
É mais simples que parece:

package guj;

import java.util.ArrayDeque;
import java.util.Deque;

public class TesteDeque {

    public static void main(String[] args) {
        Deque<Integer> deque = new ArrayDeque<Integer>();
        deque.addFirst(10); deque.addFirst(20); deque.addFirst(30);
        System.out.println (deque); // [30, 20, 10]
        deque.addLast(40); deque.addLast(50); deque.addLast(60);
        System.out.println (deque); // [30, 20, 10, 40, 50, 60]
    }
}

Então o que eu entendi era pra ser isso mesmo que voce postou,
mas toda pesquisa que fiz foi adicionar First sempre para a esquerda, até ai tudo bem,
mas quando adiciono o Last ele sempre adiciona para a direita e inicia da primeira posição deque[0];

vou postar os metodos que encontrei:

    deque.addFirst(4);
    deque.addLast(3);
    deque.addFirst(2);

saída: [3] [2] [4] onde o correto não seria: [3] [4] [2]

[code]public DequeArray(Class classe, int capacidade) { // Construtor
this.capacidade = capacidade;
deque = (T[]) Array.newInstance(classe, capacidade);

      frente = 0;
      fim = 0;  
    total = 0;

}

@Override
public void addFirst(T elemento) {
    if (frente == 0)
        frente = capacidade;
    deque[--frente] = elemento;
    total++;


}

@Override
public void addLast(T elemento) {
    if (fim == capacidade - 1)
        fim = -1;
    deque[++fim] = elemento;
    total++;

}

[/code]

Ah, mas é que você implementou “deque” como uma fila circular. Se fizer assim, você precisa implementar corretamente a parte da impressão da fila, que é onde você se estrepou.

Então quer dizer que o erro está na impressão!? Vou tentar aqui :wink:

Estou imprimindo de forma convencional:

[code]public void imprimir() {

    if (isEmpty()) {
        System.out.println("deque vazio");
    }
    for (int i = 0; i < deque.length; i++) {
        if (deque[i] != null) {
            System.out.print("[" + deque[i] + "] ");
        }
    }
}[/code]