Просматривая список со счетчиком, остановимся, когда счетчик достигнет лимита:

cursor = head;
for (int i = 1; (i < position) && (cursor != null); i++) {
    cursor = cursor.link;
}

Он останавливается, когда курсор достигает конца списка, который в это время является нулевым.

Пройдите по списку, пока не найдете целевой узел, также запишите его индекс:

while ((index < manyItems) && !(data[index].equals(target)))
    index++;

Просмотрите весь список, держите счетчик:

for (cursor = head; cursor != null; cursor = cursor.link) {
    answer++;
}

Поиск узла в связанном списке:

public static <E> Node<E> listSearch(Node<E> head, E target)
{
      Node<E> cursor;
      
      if (target == null)
      {  // Search for a node in which the data is the null reference.
         for (cursor = head; cursor != null; cursor = cursor.link)
            if (cursor.data == null)
               return cursor;
      }
      else
      {  // Search for a node that contains the non-null target.
         for (cursor = head; cursor != null; cursor = cursor.link)
            if (target.equals(cursor.data))
               return cursor;
      }
        
      return null;
}

Просмотрите связанный список с помощью цикла while:

Node cur = head;
while (cur != null) {
    answer += cur + "\n";
    cur = cur.getNext();
}