c++ - 使用链表 C++ 添加 2 个多项式表达式

标签 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;
}

最佳答案

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

如果您保持链表中的表达式按指数排序,那么将多项式相加会更容易,效率也会更高。

关于c++ - 使用链表 C++ 添加 2 个多项式表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22678752/

相关文章:

跨多个 SQL 服务器的 SQL 查询

c - 我正在尝试从链接列表末尾的列表中添加数字

go - 在 Go 语言中返回其结构地址的方法

c++ - 链表数组 C++

c++ - 使用 CMake 和 MinGW 构建 PoDoFo 库

C++:使用sqlite创建动态数据库以传输语音流

c++ - 半自动面部和眼睛检测

C++:双边类转换

c++ - 使用索引为 2D Vector 赋值

c++ - 试图制作一个包含字符串 C++ 的链表