3.
1 Papelería
Diagrama UML
Clase Nodo
package papeleria;
public class Papeleria {
public static void main(String[] args) {
MiApli app = new MiApli();
[Link](); // Captura de los artículos
[Link]("Artículos en orden inverso:");
[Link](); // Muestra los artículos en orden inverso
}
}
Clase Lista
package papeleria;
public class Lista {
Nodo head;
// Constructor
public Lista() {
[Link] = null;
}
// Método para agregar un nuevo artículo a la lista
// Complejidad: O(n) ya que debe recorrer la lista hasta el final para
agregar el nodo
public void add(String item) {
Nodo newNode = new Nodo(item);
if (head == null) {
head = newNode;
} else {
Nodo current = head;
while ([Link] != null) {
current = [Link];
}
[Link] = newNode;
}
}
// Método para verificar si la lista está vacía
// Complejidad: O(1)
public boolean isEmpty() {
return head == null;
}
}
Clase MiApli
import [Link];
public class MiApli {
Lista lista;
// Constructor
public MiApli() {
lista = new Lista();
}
// Complejidad: O(n) para agregar n artículos a la lista
public void captura() {
Scanner scanner = new Scanner([Link]);
[Link]("Introduce al menos 20 artículos de papelería:");
for (int i = 0; i < 20; i++) {
[Link]("Artículo " + (i + 1) + ": ");
String item = [Link]();
[Link](item);
}
[Link]();
}
// Método recursivo para mostrar los artículos en orden inverso
// Complejidad: O(n) ya que recorre la lista hasta el final
public void mostrarInverso(Nodo nodo) {
if (nodo == null) {
return;
}
mostrarInverso([Link]); // Llamada recursiva
[Link]([Link]); // Imprimir después de la llamada
recursiva para invertir el orden
}
// Método para iniciar el proceso de mostrar en inverso, empezando
desde la cabeza de la lista
public void mostrarInverso() {
mostrarInverso([Link]);
}
Clase Papelería
public class Papeleria {
public static void main(String[] args) {
MiApli app = new MiApli();
[Link](); // Captura de los artículos
[Link]("Artículos en orden inverso:");
[Link](); // Muestra los artículos en orden inverso