VaibhavKhurana Ответов: 2

Где находятся ошибки в объединении двух связанных списков внутри класса ?


void uni(list l1,list l2)
 {
  list u;
  node *t1,*t2;
  t1=l1.head;
  t2=l2.head;
  while(t1!=NULL)
   {
    u.push(t1->prn);
    t1=t1->next;
   }
  while(t2!=NULL)
   {
    t1=l1.head;
    while(t1!=NULL)
    {
     if(t2->prn==t1->prn)
     {
      u.push(t2->prn);
      t1=t1->next;
      break;
     }
      t1=t1->next;
    }
    t2=t2->next;
   }
  u.display();
 }


Что я уже пробовал:

Я пробовал объединение двух связанных списков в классе!

Richard MacCutchan

В чем именно заключается проблема?

VaibhavKhurana

Результат не желателен и в новом списке есть дублирование

Richard MacCutchan

Да, но что это на самом деле означает? Что эти два списка пытаются сделать, и какой результат вы хотите видеть?

Rick York

Хотя "союз" является правильным словом с лингвистической точки зрения, оно имеет специфическое значение в контексте программирования на C++, которое не соответствует вашему коду. Правильнее было бы назвать это "слиянием двух связанных списков"." В C++ и C объединение-это структура данных, члены которой совместно используют одно и то же хранилище в памяти.

2 Ответов

Рейтинг:
6

CPallini

void uni(list l1, list l2)
{
  list u;
  node *t1,*t2;
  t1=l1.head;
  t2=l2.head;
  while(t1!=NULL)
  {
    u.push(t1->prn);
    t1=t1->next;
  }
  while(t2!=NULL)
  {
    t1=l1.head;
    while(t1!=NULL)
    {
      if(t2->prn==t1->prn)
        break; // exit the loop as soon as there is a match
      t1=t1->next;
    }
    if (t1==NULL)
      u.push(t2->prn); // no match, we should add the item
    t2=t2->next;
  }
  u.display();
}


VaibhavKhurana

Спасибо

CPallini

Добро пожаловать.

Рейтинг:
0

KarstenK

Это задача, которую вы, кодер, должны выполнить для отладки своего кода. Используйте отладчик. Сделайте какой-нибудь вывод.

Я предполагаю, что ваша проверка, если какой-то узел второго списка уже является членом нового списка, идет неправильно. Напишите функцию поиска и протестируйте ее с некоторыми очевидными данными.