Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

198
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda