Clase de estructuras de datos, que implementa una lista única enlazada con nodos de cabeza, cola y corriente. Si tiene problemas con un método, podría usar un pequeño empujón en la dirección correcta.Lista enlazada a Java: método de adición
A partir de la asignación, escribir el método:
add (artículo): agrega el elemento (String) después de que el nodo actual en ese momento y define el puntero actual para referirse al nuevo nodo.
Mi intento:
Mi método add sólo parece funcionar cuando estoy añadiendo elementos a la mitad de la lista, no en cualquiera de los extremos. Si lo uso para agregar algunos elementos y luego imprimir la lista, solo el primero que agregue estará en la lista, mientras que mis métodos de anteponer y anexar han probado muy bien.
¿Hay algún problema evidente con mi código? Siento que me falta algo obvio.
Todos:
public class LinkedList {
Node head = null; /* Head of the list */
Node tail = null; /* Tail of the list */
Node curr = null; /* Current node in the list */
public void prepend(String item) {
if (head == null) {
head = tail = new Node(item, null);
curr = head;
} else {
head = new Node(item, head);
curr = head;
}
}
public void append(String item) {
if (head == null) {
head = tail = new Node(item, null);
curr = tail;
} else {
tail.next = new Node(item, null);
tail = tail.next;
curr = tail;
}
}
public void add(String item) {
if (curr != null) {
Node newNode = new Node(item, curr.next);
curr.next = newNode;
curr = newNode;
} else {
head = tail = new Node(item, null);
curr = head;
}
}
public void delete() {
if (curr.next == null) {
Node temp = head;
while (temp.next != curr) {
System.out.println(temp.item);
temp = temp.next;
}
temp.next = null;
curr = head;
}
}
public void find(String item) {
Node temp = new Node(curr.item, curr.next);
if (item.equals(temp.item))
curr = temp;
else {
temp = temp.next;
while (temp.next != null && temp != curr) {
if (item.equals(temp.item))
curr = temp;
}
}
}
public String get() {
if (curr != null)
return curr.item;
else
return "";
}
public boolean next() {
if (curr != tail) {
curr = curr.next;
return true;
} else
return false;
}
public void start() {
curr = head;
}
public void end() {
curr = tail;
}
public boolean empty() {
if (head == null)
return true;
else
return false;
}
}
Node
clase:
class Node {
Node next;
String item;
Node(String item, Node next) {
this.next = next;
this.item = item;
}
}
¿Qué pasa con el resto del código? – fge
Esa parte se ve bien, entonces muéstranos el código que lo rodea, el error debe estar allí. –
resto de código agregado – dysania