下面是我的源代码,它生成 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/