使用LinkedList C ++的衍生计算器

时间:2017-05-14 21:33:39

标签: c++ parsing linked-list

我正在尝试制作衍生计算器(我必须使用链表)。

每个节点的结构应如下:

struct node {
    int coefficient;
    string function;
    int power;
    node*fx;
    node*gx;
    node*next;
};

|系数|功能|电源| f(x)| g(x)|下一步|

输入表示示例:

3x ^ 2((3x-3)/(4x-2))+ sin(4x-3)

系数*函数^幂(f(x)/ g(x))+ next

我尝试使用RegEx但是在嵌套表达式时使用它并不容易,因为用户可能会抛出未知数量的函数。

我知道我必须以某种方式解析表达式,然后将所有内容拆分成一个向量然后填充节点,但我只是无法对该逻辑进行编码,因为我对C ++还不熟悉。

我也尝试过使用ExprTk,但我发现它很难理解,除了随附的自述文件外,我找不到任何在线教程。

如果有人可以指导我朝着正确的方向前进,或者向我展示一个很棒的教程。

1 个答案:

答案 0 :(得分:0)

我认为它可以用regexp,但你必须按正确的顺序排列。例如:

3x ^ 2((3x-3)/(4x-2))+ sin(4x-3) - > 3x ^ 2((3x-3)/(4x-2))+ sin(n1) - > 3x ^ 2((3x-3)/ n2)+ sin(n1) - > 3×^ 2(n3 / n2)+ sin(n1) - > ...

依此类推这样的正则表达式:

\ d + \ d - > function = +

\ d- \ d - > function = -

在每个步骤中,您在内存中创建新节点,并将其保留在字符串中,也就是" n%nodeNum"。