una polinomio ordenadas nodo llenar listas lista ligada insertar explicacion enlazadas enlazada eliminar como clase java for-loop linked-list nodes

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;