用链接列表减去多项式表达式?

时间:2016-06-08 04:00:29

标签: c++ pointers linked-list nodes

所以我得到了这个创建多项式的结构(由用户输入):

struct Term
{
    double coefficient;
    unsigned exponent;
    Term *next;
};

我应该编写一个函数来减去由这个结构组成的两个多项式。我编写了以下代码,我的代码正在编译,但我得到了奇怪的输出。

TermPtr subtract(TermPtr p1, TermPtr p2) {
//can't change the function declaraction, only the contents in the function

    TermPtr newPoly; //declares newPoly

    newPoly = new Term; //creates new node 
    newPoly -> next=p1; // has next in newPoly point to 
    newPoly -> next=p2; // both p1 and p2 (not sure why really (?))

    if (p1 -> exponent == p2 -> exponent){
        newPoly->coeff = ((p1 -> coeff) - (p2 -> coeff));
    } 

    // if the exponents in each p1 and p2 match, perform subtraction
    // on coefficients


    return newPoly; // return the new polynomial
}

这是我输出的一个例子:

Polynomial 1:
2.00 * X^4 + 1.00 * X^2
Polynomial 2:
1.00 * X^4 + 2.00 * X^2

//polynomial 1 - polynomial p2
//negative numbers are valid
Result of subtracting two polynomials:
1.00 * X^0 + 1.00 * X^4 + 2.00 * X^2 //wrong

我认为问题出在我的newPoly指向p1和p2的地方。我不确定newPoly应该指向哪个节点,或者两个节点是否应该指向newPoly。我写了那些代码行,因为没有它们,我的代码没有编译,这是有道理的,因为newPoly不能只是指向什么(或没有被指向?)。并且一些节点不应该以NULL结尾才能实际成为链表吗?不知道这会发生什么。

我已经在这方面工作了几天,我无法弄明白。任何帮助或解释将不胜感激。谢谢。

0 个答案:

没有答案