2015-10-29 5 views
0

Я получаю ошибку сегментации сообщения об ошибке для следующей функции. Мне было интересно, если кто-то могут помочь мне решить эту проблемуСообщение об ошибке C++

Polynomial Polynomial :: multiply(const Polynomial& p) const{ 
    //The functions returns the mathematical product of the host polynomial and p 

    // new object created 
    Polynomial multiply; 
    // node that points to the beginning of the list 
    Node *temporary = m_head; 

    Node *copy = p.m_head; 

    long num_coeff; 

    unsigned int num_deg; 

    while(temporary -> m_next != NULL){ 
    copy = p.m_head; 
    while(copy -> m_next != NULL){ 
     Polynomial variable; 
     num_coeff = temporary -> m_coefficient * copy -> m_coefficient; 
     num_deg = temporary -> m_degree + copy -> m_degree; 
     variable.insertMonomial(num_coeff, num_deg); 
     multiply.add(variable); 
     copy = copy -> m_next; 
    } 
    temporary = temporary -> m_next; 
    } 
    return multiply; 
} 
+0

где именно является встречающаяся ошибка сегментации? Вы уверены, что 'm_head' не является нулевым при входе в функцию? как насчет 'p.m_head'? – GreatAndPowerfulOz

+0

Я бы просто использовал 'std :: vector', а не связанный список. И если вы чувствуете, что вам абсолютно необходимо использовать связанный список, то для вас есть 'std :: list'. Задача решена. –

+0

Спасибо! Я инициализировал m_head как null в начале. – John

ответ

0

я готов поспорить, что вы работаете в сбой сегментации, потому что вы не имеете право испытания в условных этих while заявлений.

Вы используете temporary -> m_next != NULL. Что происходит, когда temporary является NULL?

Вместо

while(temporary -> m_next != NULL){ 
    copy = p.m_head; 
    while(copy -> m_next != NULL){ 

вы должны использовать

while(temporary != NULL){ 
    copy = p.m_head; 
    while(copy != NULL){ 
Смежные вопросы