Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

209
Visualizações
Un método que devuelve una nueva lista enlazada individualmente invertida usando una pila en Java, manteniendo los mismos elementos pero imprimiéndolos en orden inverso

Entonces, por ejemplo, si en una lista con 2 elementos, donde la letra A es el primer elemento y la letra B es el segundo elemento, este método devolvería una nueva lista con los mismos elementos pero al revés, así que B primero y A segundo. Desafortunadamente, en este caso no funciona y en su lugar obtengo una excepción EmptyStackException. También dice que el valor de retorno del método nunca se usa, no estoy seguro de qué debe tener como declaración de retorno para que funcione. ¿Alguien puede decirme dónde está exactamente el error en mi código, o tal vez simplemente indicarme la dirección correcta? Gracias por adelantado !

Aquí está mi código:

 public LinkedList<E> reverse() throws EmptyListException { Stack<LinkedNode<E>> stack = new Stack<>(); LinkedNode<E> temp = head; while(temp != null){ stack.push(temp); temp = temp.next; } temp = stack.peek(); head = temp; stack.pop(); while(!stack.isEmpty()){ temp.next = stack.peek(); stack.pop(); temp =temp.next; } temp.next = null; return stack.peek(); } public static void main(String[] args){ LinkedList<String> List = new LinkedList<>(); List.add("A"); List.add("B"); List.reverse(); -----------------

ACTUALIZAR ---> Ok, agregué una segunda variable temporal, cambié la declaración de retorno y usé un método toString() en main para imprimirlo. Funciona bien incluso con más de 2 elementos, pero cuando paso el mouse en reversa (), el IDE todavía dice que el valor de retorno del método nunca se usa. Esto es lo que actualicé:

 LinkedNode<E> temp2 = temp; while(!stack.isEmpty()){ temp.next = stack.peek(); stack.pop(); temp =temp.next; } temp.next = null; head = temp2; return temp2; public static void main(String[] args) { LinkedList<String> List = new LinkedList<>(); List.add("A"); List.add("B"); List.add("C"); List.add("D"); List.add("E"); List.add("F"); List.reverse(); System.out.println(List.toString()); }
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

No debe devolver nada, y debe actualizar la temperatura al sacar el elemento de la pila. Algo como:

 public void reverse() throws EmptyListException { if(head == null) throw new EmptyListException Stack<LinkedNode<E>> stack = new Stack<>(); LinkedNode<E> temp = head; while(temp != null){ stack.push(temp); temp = temp.next; } head = stack.peek(); while(!stack.isEmpty()){ temp = stack.peek(); stack.pop(); temp = temp.next; } temp.next = null; }

Su IDE se queja porque:

 List.reverse();

no configuró el retorno del método inverso a nada, por ejemplo:

 LinkedNode<E> tmp = List.reverse();

Pero, de nuevo, no es necesario devolver nada.

over 4 years ago · Santiago Trujillo Relatório

0

No estoy seguro de por qué tiene todo ese código o está tratando de usar una pila. Parece que ya ha utilizado el método de la biblioteca reverse , así que ¿por qué no utilizarlo en lugar de reinventar la rueda?

 LinkedList<String> list = new LinkedList<>(); list.add("A"); list.add("B"); Collections.reverse(list);

¿O me estoy perdiendo el punto?

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda