데이터 구조 일원 다항식 덧셈 단일 체인 표 실현
1686 단어 데이터 구조
마지막 으로 실 현 될 때 계수 0 은 고려 하지 않 았 지만 사실은 주요 지침 조작 이 이미 나 왔 다.계수 가 0 인 노드 는 삭제 해 야 하고 삭제 작업 이 적 습 니 다.
#include<iostream>
#include<stdlib.h>
using namespace std;
struct node{
int xi;
int ci;
node* next;
};
int main()
{
int lengtha,lengthb,i;
node *L1,*L2,*p,*q;
cin>>lengtha>>lengthb;
L1=(node*)malloc(sizeof(node));
L2=(node*)malloc(sizeof(node));
L1->next=NULL;
L2->next=NULL;
p=L1;
for(i=1;i<=lengtha;i++)
{
q=(node*)malloc(sizeof(node));
cin>>q->xi>>q->ci;
p->next=q;
p=q;
p->next=NULL;
}
p=L2;
for(i=1;i<=lengthb;i++)
{
q=(node*)malloc(sizeof(node));
cin>>q->xi>>q->ci;
p->next=q;
p=q;
p->next=NULL;
}
p=L1->next;
q=L2->next;
while(p!=NULL&&q!=NULL)
{
if(p->ci==q->ci)
{
p->xi=p->xi+q->xi;
p=p->next;
q=q->next;
}
else if(p->ci>q->ci)
{
node *j,*n;
j=L1;
n=q;
q=q->next;
while((j->next)!=p)
{
j=j->next;
}
n->next=j->next;
j->next=n;
}
else p=p->next;
}
if(p==NULL&&q!=NULL)
p=q;
p=L1->next;
while(p!=NULL&&p->next!=NULL)
{
cout<<p->xi<<"x^"<<p->ci<<"+";
p=p->next;
}
if(p!=NULL&&p->next==NULL)
cout<<p->xi<<"x^"<<p->ci<<endl;
system("pause");
return 0;
}