提问者:小点点

如何使用链表创建带有char的多项式表达式?


我有struct PolyNode,一个char多项式将被输入,在main函数中创建两个,然后我要将它们相加和相乘。我不知道如何编写create函数。我会做加法和乘法。

我的创建函数:

polynode*CreatePoly(char*expr);

--------------------

我的打印功能:

void Print(PolyNode* poly)
{
if (poly == NULL) 
{ 
printf("<NULL>\n"); 
return;
 }

    printf("<");
    PolyNode* p = poly;
    while (p != NULL) {
        if (p->exp == 0) {
            printf("%+-3.1f", p->coef);

        }
        else if (p->exp == 1) {
            if (p->coef == 1.0) printf("+x ");
            else if (p->coef == -1.0) printf("-x ");
            else printf("%+-3.1fx ", p->coef);

        }
        else {
            if (p->coef == 1.0) printf("+x^%-2d ", p->exp);
            else if (p->coef == -1.0) printf("-x^%-2d ", p->exp);
            else printf("%+-3.1fx^%-2d ", p->coef, p->exp);
        } //end-else

        p = p->next;
    } // end-while

    printf(">\n");}

--------------------

我从main中调用函数,如下所示:

polynode*poly1=CreatePoly((char*)“-x^3-6x^2+4x+22”);

printf(“%25s”,“poly1[-x^3-6x^2+4x+22]:”);

打印(poly1);

--------------------

多节:

    struct PolyNode{ double coef;             // Coefficient

    int exp;                 // Exponent

    struct PolyNode* next;   // Next polynomial node
 };

共1个答案

匿名用户

您需要编写一个“解析器”。一个更常见的例子是实现一个简单计算器的代码:它必须读取数字,可能是变量和运算符,并且要么构造一个解析树,要么动态求值。

看看这样做的示例和练习代码,这里的大部分内容都是一样的。