Добавление узла в конец связанного списка, имеющего задний и начальный указатели [дубликат]


На этот вопрос уже есть ответ здесь:

Я пытаюсь добавить узел в конец моего связанного списка, я получаю исключение нулевого указателя, когда я получаю оператор else и пытаюсь установить проблему.задний.рядом с новым узлом, который я добавляю. По какой-то причине, когда я пытаюсь установить задний.при следующем указателе на новый узел выскакивает исключение.

Чтобы уточнить,

BigIntegerList-это связанный список узлов, которые также являются связанными списками, представляющими большое целое число, связывая отдельные целые числа вместе. Большой целочисленный список определяет" начальный "и" задний " узлы, узел BigInteger определяет "x "для данных и" next " для указателя на следующий узел в списке.

Также,

Проблема.n представляет число BigIntegers, которые будут считываться, метод считывает из текстового файла первое число read указывает, сколько больших целых чисел будет прочитано, а затем фактические BigIntegers

Любые идеи приветствуются, так как я очень застрял....

BigIntegerList problem;
   LinkedList x;
   BigIntegerNode curr;

   problem = new BigIntegerList();
   //get value of first line stating #of bigInts to read in
   problem.n = LinkedList.readInteger(in);
   //read big ints from text file based on first number passed, n
   for(int i=0; i<problem.n;i++)
   {
     x = new LinkedList();
     x.readBigInteger(in);
     //case that the list is empty
     if(problem.n<1)
     {
       problem.start = new BigIntegerNode(x,null);
       problem.rear = problem.start;
     //list is not empty, add nodes to rear
     }else
     {
       curr = new BigIntegerNode(x,null);
       problem.rear.next = curr; -----> this is where i get a nullpointer....
       problem.rear = curr;
     }
   }
   return problem;
1 2

1 ответ:

Как предлагает @dave, измените if (problem.n < 1) на

If (i < 1) {

problem.n это общее число итераций, которые будет делать цикл, то есть константа. i - счетчик цикла. Он будет установлен в 0 в первой итерации, а затем в 1, 2, 3,..., (проблема.n)-1

Поскольку вы хотите, чтобы оператор if оценивался в true в первой итерации, пусть он смотрит на i вместо задачи.n