2016-12-26 8 views
-2

Найдите пересечение двух данных LinkedList (где каждый узел имеет символ). Возвратите LinkedList, который имеет символ, который появляется в обоих LinkedList (тот же порядок последовательности, что и LinkedList1).пересечение двух заданных LinkedList

ошибки: переменная температура не может быть инициализирована

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

public SchNode func(SchNode head1, SchNode head2) 
    { 
     SchNode temp; 

    for(SchNode ptr=head1;ptr!=null;ptr=ptr.nextNode) 
    { 
     for(SchNode ptr2=head2;ptr2!=null;ptr2=ptr2.nextNode) 
     { 
      if(ptr.ch==ptr2.ch) 
      { 
      temp.ch=ptr2.ch; 
      temp=temp.nextNode; 

      } 
     } 
    } 

    return temp ; 
    } 
+1

Вы не указали temp, и вам также нужно его инициализировать. – Malav

+0

Ваш вопрос здесь непонятен. Вы пытаетесь найти пересечение двух связанных списков, а также попытаться получить список, в котором все элементы comman будут последовательно. Оба - разные вещи. – Malav

+0

* «Возврат LinkedList» * сбивает с толку (плохая фраза). Я прочитал это как возвращающий * новый * (третий) LinkedList, содержащий символы, общие для обоих списков. – Andreas

ответ

0

Вы можете использовать этот метод, если не понимаете его неправильно.

  • мера list1 длины, позволяет называть его A
  • мера list2 длины, позволяет называть его B
  • разница является: C = A - B
  • если C < 0 затем выбрать песни2, иначе выбрать list1, назовём выбирают перечень choosenList
  • Ответ: choosenList[abs(C)] //i mean absolute value of C

EDIT: я понимаю, что у вас есть два связанных списка, которые имеют общий узел (указатель)

+0

Это приведет к перекрестку двух связанных списков, но не числа символов в последовательности. – Malav

Смежные вопросы