Ajuda com questão de Estrutura de Dados em Java

Algum poderia me ajudar com essa questão usando a linguagem Java?

Dada a classe lista contígua de inteiros (LCInteiro), faça um método que recebe uma lista dessa classe e retorna outra lista (dessa classe) com os elementos da primeira invertidos.

Ex.; Lista original: | 2 | 3 | 4 | 5 |

lista retornada: | 5 | 4 | 3 | 2 |

public class LCInteiro {
private int[] listaCont;
private int nElem;

public LCInteiro (int tamanho) {
	this.listaCont = new int[tamanho];
	this.nElem = 0;
}
public Integer getNum(int pos) {
	if (pos>=0 && pos<this.nElem) {
		return this.listaCont[pos];
	}else {
		return null;
	}
}
public int getNElem() {
	return this.nElem;
}
public boolean eVazio() {
	if (this.nElem==0) {
		return true;
	}
	return false;
}
public boolean eCheio() {
	if (this.nElem==this.listaCont.length) {
		return true;
	}
	return false;
}
public int inserir (int num, int pos) {
	if (this.eCheio()) {
		return -1;
	}else if (pos>this.nElem || pos<0) {
			return -2;
	}else {
		for (int i = this.nElem-1; i >= pos; i--) {
			this.listaCont[i + 1] = this.listaCont[i];
		}
		this.listaCont[pos] = num;
		this.nElem++;
		return 0;
	}
}
// pesquisa (placa)
public int pesquisa (int num) {
	for (int i=0; i<this.nElem; i++) {
		if (this.listaCont[i]==num) {
			return i;
		}
	}
	return -1;
}
// insereFim (Veiculo)
public int insereFim (int num) {
	if (this.eCheio()) {
		return -1;
	}else if (this.pesquisa(num)!=-1) {
		return -2;
	}else {
		this.listaCont[this.nElem] = num;
		this.nElem++;
		return 0;
	}
}
//  remove (num)
public int remove (int num) {
	if (this.eVazio()) {
		return -1;
	}else {
		int pos = this.pesquisa(num);
		if (pos==-1) {
			return -2;
		}else {
			this.listaCont[pos] = this.listaCont[this.nElem-1];
			this.nElem--;
			return 0;
		}
	}
}
public String toString() {
	String aux = "";
	for (int i=0; i<this.nElem; i++) {
		aux += " | "+this.listaCont[i];
	}
	if (this.nElem>0) {
		aux += " |";
	}
	return aux;
}

}

Para inverter os elementos, você pode fazer isso:

int n = 0;
lista_recebida[] = new int[5//tamanho qualquer];
lista_retornada[] = new int[5];
for (int i = lista_recebida.length - 1; i >= 0; --i){
    lista_retornada[n] = lista_recebida[i];
    n++;
}

Só um exemplo…

Tem uma função que faz isso, o @staroski postou uma vez, não lembro de cabeça qual é. Mas procurem aqui no fórum que vocês vão encontrar.

Também não lembro a postagem agora, mas a lógica é essa:

for (int inicio = 0, fim = tamanhoDaLista - 1; i < metadeDoTamanhoDaLista; inicio++, fim--) {
    Elemento e = lista[fim];
    lista[fim] = lista[inicio];
    lista[inicio] = e;
}
1 curtida