1
下面是我的源代码,它将生成2个由用户输入给出的多项式。现在,我坚持如何添加多项式并显示结果。我有想法如何评估我们检查列表中的指数。如果相同,系数将相加。如果不是,当前节点将进入下一个节点并与另一个节点进行比较。是吗?其实我对链表很困惑。使用链表C++添加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;
}
有没有理由你使用自己的列表而不是'std :: list'?如果你“实际上很困惑”,那么你可能首先需要使用'std :: list',这样你就知道你的多项式级逻辑是正确的,而不是同时进行调试。 –
您是否需要使用自己的链接列表?如果没有,你可以使用'std :: map'更优雅地解决你的问题。地图中的关键字可以是指数,地图中的值可以是系数。 –
可以说,我使用我自己的列表,因为我更清楚这种方式和列表的算法。我很困惑,因为有很多写链接列表源代码的方法。而且还不能区分哪一个更好。 – user3120873