указатель в C ++ не показывает правильные значения - PullRequest
0 голосов
/ 27 марта 2012

у меня есть 3 связанных списка и функция объединения

a b и результат - списки, я хочу заполнить список результатов элементами, но он всегда пуст.

main is result.UnionSets(a,b) function is

void UnionSets(linkedlist & l1, linkedlist & l2)
{       
    node<type> *temp=   l1.tail;
    if(temp!=NULL)
    {
        while(temp->next!=tail)
        {
            AddNode(temp->data);
            temp=temp->next;            
        }
    }
    temp=l2.tail;
    if(temp!=NULL)
    {
        while(temp->next!=tail)
        {
            AddNode(temp->data);
            temp=temp->next;

        }
    }
}

Ответы [ 2 ]

1 голос
/ 27 марта 2012

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

  1. Вы инициализируете свои temp указатели на элемент tail их связанных списков. Типичная номенклатура должна начинаться с head и работать в направлении tail. Также типично, что в последнем узле в качестве следующего указателя используется NULL.

  2. Вы сравниваете узлы одного связанного списка с узлами в другом связанном списке. Связанные списки действительно сшиты? Или они на самом деле независимы друг от друга?

Принимая во внимание эти два момента, попробуйте следующее:

void UnionSets(linkedlist & l1, linkedlist & l2)
{       
    node<type> *temp=   l1.head;
    while(temp!=NULL)
    {
            AddNode(temp->data);
            temp=temp->next;            
    }
    temp=l2.head;
    while(temp!=NULL)
    {
            AddNode(temp->data);
            temp=temp->next;
    }
}
1 голос
/ 27 марта 2012

Как то так?

static linkedlist Union(linkedlist& A, linkedlist& B)
{
    linkedlist result;
    for(linkedlist::iterator iter = A.begin(); iter != A.end(); ++iter)
    {
       result.append(*iter);
    }
    for(linkedlist::iterator iter = B.begin(); iter != B.end(); ++iter)
    {
       result.append(*iter);
    }
    return result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...