polinomio - listas enlazadas ordenadas java
Contando todos los nodos en una lista enlazada (9)
Intento escribir un método simple para contar todos los nodos en la lista enlazada. Sé que hay 7 elementos en la lista vinculada, pero devuelve solo 6 de ellos.
Aquí está mi método
public int count() {
int count = 0;
for (ListNode n = head; n.next != null; n = n.next) {
count++;
}
return count;
}
Y aquí está mi ListNode.java
public class ListNode {
String name; // a name in the list
ListNode next; // the next node in the list
ListNode prev; // the previous node in the list
/**
* Constructor with just a name. This form would be most useful when
* starting a list.
*/
public ListNode(String name) {
this.name = name;
next = null;
prev = null;
}
/**
* Constructor with a name and a reference to the previous list node. This
* form would be most useful when adding to the end of a list.
*/
public ListNode(String name, ListNode node) {
this.name = name;
next = null;
prev = node;
}
}
Bueno, eso es porque estás comenzando tu conteo desde 0, descuidando el primer nodo.
En cambio, inicializa count=1
;
Desea hacer un bucle hasta n == nulo. Tal como está, te estás deteniendo.
El nodo final fallará n.next != null
pero es parte de LinkedList, por lo que debe considerarlo. Parece que simplemente tiene un error de indexación.
Me lo imaginé.
for (ListNode n = head; n != null; n = n.next)
n.next! = null fue el error.
No estás contando el último nodo. Cuando llegue al último elemento que se contará, n.next será nulo, por lo que el recuento nunca se incrementará. En su lugar, puede probar un ciclo como el siguiente:
ListNode n = head;
for (ListNode n = head; n != null; n = n.next) {
count++;
}
prueba esto
public int count() {
int count = 0;
for (ListNode n = head; n != null; n = n.next) {
count++;
}
return count;
}
n.next != null
Es tu problema. Cambiarlo a n!=null
Example :
List : 1--> 2 -->3--> 4-->null
Count : 1--> 2-->3-->here n=4 and n.next=null. So, your loop will break and count will be 3 (i.e; the last node will not be counted.)
public int count() {
int count = 0;
for (ListNode n = head; n != null; n = n.next) {
count++;
}
return count;
}
Debería verificar primero por nulo. Si no es 0, configure ''contador = 1'' antes de recorrerlo.
if (_first == null) return 0;
int count = 1;
for (ListNode n = _first; n.Next != null; n = n.Next)
{
count++;
}
return count;