#include <iostream>
#include <stdlib.h>
#define MAX 5
using namespace std;
typedef struct node
{
int num;
int mi;
struct node* pnext;
}qnode,*pnode;
pnode init()
{
int size=MAX,num_,mi_;
pnode head,p,q;
head=(pnode)malloc(sizeof(qnode));
head->pnext=NULL;
q=head;
while(size--)
{
p=(pnode)malloc(sizeof(qnode));
cin>>num_>>mi_;
p->num=num_;
p->mi=mi_;
q->pnext=p;
q=p;
}
q->pnext=NULL;
return head;
}
void traverse(pnode head)
{
pnode q=head->pnext;
while(q!=NULL)
{
cout<<q->num<<'X'<<q->mi<<' ';
q=q->pnext;
}
}
pnode add(pnode head1,pnode head2)
{
int sum;
pnode p,q,pra,prb;
p=head1->pnext;
q=head2->pnext;
pra=head1;
while(p!=NULL && q!=NULL)
{
if(p->mi<q->mi)
{
pra=p;
p=p->pnext;
}
else if(p->mi==q->mi)
{
sum=p->num+q->num;
if(sum==0)
{
p=p->pnext;
q=q->pnext;
pra->pnext=p;
}
else if(sum!=0)
{
p->num=sum;
pra=p;
p=p->pnext;
q=q->pnext;
}
}
else if(p->mi>q->mi)
{
prb=q;
q=q->pnext;
pra->pnext=prb;
prb->pnext=p;
pra=pra->pnext;
}
}
if(q!=NULL)//当head1最高此幂也小于head2当前的幂的时候
{
pra->pnext=q;
}
return head1;
}
int main()
{
pnode head1,head2;
head1=init();
head2=init();
add(head1,head2);
traverse(head1);
}
3.6
最新推荐文章于 2024-05-28 15:20:59 发布