使用链接列表C ++添加2个多项式表达式

时间:2014-03-27 05:07:00

标签: c++ linked-list

下面是我的源代码,用于生成由用户输入给出的2个多项式。现在,我停留在如何添加两个多项式并显示结果。我知道如何评估哪个是检查列表中的指数。如果相同,系数将添加。如果没有,当前节点将进入下一个节点并与另一个节点进行比较。是吗?实际上我对链表很困惑。

 #include<iostream>
using namespace std;
class Node{
      public :
             int coef;
             int exp;
             Node *next;
      private:
      };

class List{
      public:
             List(){
                    head = NULL;
             }
             void insert(int x, int y){ //inserting node
                  Node *newNode = new Node;
                  newNode->coef = x;
                  newNode->exp = y;
                  newNode->next = NULL;

                  if(head==NULL){
                                 head = newNode;
                  }
                  else{
                       Node *currNode = head;
                       while(currNode->next!=0){
                             currNode = currNode->next;
                       }
                       currNode->next = newNode;
                  }
             }
             void display(){ //display the expression
                  Node *currNode = head;
                  cout<<"\n\n\t";
                  while(currNode->next!=0){
                        //cout<<"Coef: "<<currNode->coef<<"\t"<<"Expo: "<<currNode->exp<<endl;
                        cout<<currNode->coef<<"X^"<<currNode->exp<< "+";
                        currNode = currNode->next;
                  }
                  cout<<currNode->coef<<"X^"<<currNode->exp<<endl;
                  //cout<<"Coef: "<<currNode->coef<<"\t"<<"Expo: "<<currNode->exp<<endl;
             }
      private:
              Node *head;              
      };

int main(){

    List seq1,seq2;

    int x,y,a,b;
    cout<<"Enter your expression 1: "<<endl;

    while(cin>>x>>y,x!=0&&y!=-1){
            seq1.insert(x,y);
    }
    seq1.display();
    cout<<endl;
    cout<<"Enter your expression 2: "<<endl;

    while(cin>>a>>b,a!=0&&b!=-1){
            seq2.insert(a,b);
    }
    seq2.display();

    return 0;
}

1 个答案:

答案 0 :(得分:1)

正如您猜测的那样,您需要遍历每个列表并比较指数。如果指数匹配,则添加系数。您想要更仔细地查看的是您使用链接列表的方式。目前,无论指数的值如何,您都在末尾添加多项式的每个新条目。此外,如果用户输入两次相同的指数,则添加第二个节点。

如果保持链表中的表达式按指数排序,则可以更容易地将多项式加在一起并且更加高效。