Как вернуть количество элементов в связанном списке - PullRequest
1 голос
/ 23 июня 2019

Мне нужно реализовать функцию size (), чтобы она считала количество элементов в списке.

Я не могу использовать переменную count.Должен работать (учитывая наш «верхний» узел и настройку конструкторов [по умолчанию]).Я знаю, что должен использовать цикл, но я не знаю, как ссылаться на индексы, как я делаю с массивами.

     public class DropOutStack<T> implements StackADT<T> {
      private int max;
      private LinearNode<T> top;

     public DropOutStack(){
      max = 10;
      top = null;
     }

     public DropOutStack(int capacity){
      setMaxSize(capacity);
     }

     public DropOutStack(T element){
      LinearNode<T> temp = newLinearNode(element);
      temp.setNext(top);
      top = temp;
      max = 10;
      }

     public DropOutStack(T element, int capacity){
      LinearNode<T> temp = newLinearNode(element);
      temp.setNext(top);
      top = temp;
      setMaxSize(capacity);
      }

     public int size(){

      }

     public boolean isEmpty(){
      if(top == null) return true;
       return false; 
      }
}

DropOutStack list = new DropOutStack ("T", 4);

System.out.print (list.size ());

Должно печатать 1. Так как была добавлена ​​только буква "T".

Добавление снимка экрана класса композиции.Я думаю, что я должен использовать метод оттуда.Интерфейс просто объявляет пустые функции.Нет кодаНе нужен для функции size ().Это мой первый урок программирования, поэтому я надеюсь, что дал все необходимое, чтобы решить эту проблему.Пожалуйста, помогите введите описание изображения здесь

1 Ответ

0 голосов
/ 01 июля 2019

Что-то подобное будет считать элементы:

ToIntFunction<LinearNode<T>> counter = (node) -> {
  int count = 0;
  while( node != null ) {
    count++;
    node = node.getNext();
  }
  return( count );
};


… применяется в функции размера () класса DropOutStack:

public int size() {
  return( counter.applyAsInt( top ) );
}
...