Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

197
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!