Как мне рекурсивно получить размер связанного списка? - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь найти размер связанного списка, используя рекурсивный алгоритм. Вот что у меня есть:

  public int getCurrentSize()
  {
     int size = 0;

     size = getCurrentSizeHelper(headRef);

     return size;
  }


  public int getCurrentSizeHelper(BoxClass workingRef)
  {
     int sizeAtIndex = 0;

     //If empty, size is zero
     if (isEmpty())
        {
           return sizeAtIndex;
        }

     //If there is no next box, end recursion and increment size
     if (workingRef.nextRef == null)
        {
           sizeAtIndex++;
        }

     //While there are next boxes, increment size and continue recursion
     else
        {
           sizeAtIndex = getCurrentSizeHelper(workingRef.nextRef) + 1;
        }

     return sizeAtIndex;
  }

У меня это работало раньше, однако, каждый раз, когда я пытаюсь его запустить, я получаю ошибку переполнения стека. Буду признателен за понимание этой проблемы.

1 Ответ

1 голос
/ 12 марта 2020

Лучшая компактная версия (псевдокод):

  public int getCurrentSizeHelper(BoxClass workingRef)
  {
       if (workingRef.isEmpty())
       {
           return 0;
       }
       return getCurrentSizeHelper(workingRef.nextRef) + 1;
  }

Это сделает работу. Возьми любой пример, попробуй и проверь себя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...