我想使用链表添加两个多项式。但是在第二个链表中输入第二个多项式后,我遇到了分割错误。
当我尝试打印多项式 1 时,幂本身保持为 1,但不增加。 正在尝试所有可能的错误,所以代码可能有点笨拙。
#include<bits/stdc++.h>
using namespace std;
struct node{
int coef;
int po;
node *next;
}*start1=NULL,*go,*go2,*start2=NULL;
int main()
{
int d1,d2;
cout<<"Enter degree of poly 1 :";
cin>>d1;
cout<<"Enter degree of poly 2 :";
cin>>d2;
int i,c,p;
cout<<"Polynomial 1:" ;
for(i=0;i<=d1;i++)
{ p=1;
cout<<"Enter coeff of po "<<i<<" : " ;
cin>>c;
node *temp=new node;
temp->po=p;
p=p+1;
temp->coef=c;
temp->next=NULL;
go=start1;
if(start1==NULL)
{
start1=temp;
continue;
}
while ((go->next)!=NULL)
{
go=go->next;
}
go->next=temp;
p=p+1;
}
cout<<"Polynomial 2 :";
for(i=0;i<=d2;i++)
{ p=1;
cout<<"Enter coeff of po "<<i<<" :";
cin>>c;
node *temp2=new node;
temp2->po=p;
temp2->coef=c;
temp2->next=NULL;
go2=start2;
if(start2==NULL)
{
start2=temp2;
continue;
}
while ((go2->next)!=NULL)
{
go2=go2->next;
cout<<"kk";
}
go2->next=temp2;
p=p+1;
}
go=start1;
while(go!=NULL)
{
go2=start2;
while(go2->next !=NULL)
{
if((go->po)==(go2->po))
{
go->coef = go->coef + go2->coef;
}
go2=go2->next;
}
go=go->next;
}
go=start1;
cout<<"Resultant Polynomial : ";
for(i=0;i<=d1;i++)
{
cout<<go->coef<<"^"<<i+1<<" + ";
go=go->next;
}
我预计功率会增加,但它保留为 1 并且我遇到分段错误
程序崩溃的原因是:
cout << "Resultant Polynomial : ";
for (i = 0; i <= d1; i++)
{
cout << go->coef << "^" << i + 1 << " + ";
go
是一个空指针。这是因为在此代码段之前,您有以下循环:
while (go != NULL)
{ ... }
因此,当此循环结束时,go
是一个 null指针,因为循环不会以其他方式结束(否则它不会break
或终止(。您的意思是在此循环之后将go
设置为不同的初始值吗?
在不相关的说明中,请阅读为什么我不应该 #include ?和为什么是"使用命名空间 std;"被认为是不良做法?