64,676
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include<iostream>
using namespace std;
struct Node
{
int a,b;
Node* next;
};
void intit(Node* &head)
{
int nit,pit;
head=new Node;
Node* m=head;
cout<<"PLEASE";
for(int i=0;i<1;++i)
{
cin>>nit>>pit;
Node* p=new Node;
p->a=nit;
p->b=pit;
m->next=p;
p->next=NULL;
m=m->next;
}
}
void print(Node* head)
{
Node* p=head;
p=p->next;
while(p)
{
cout<<p->a<<"X^"<<p->b<<endl;
p=p->next;
}
}
void merge(Node* &head1,Node* &head2,Node* &head)
{
Node* p=head1;
Node* q=head2;
Node* m=head;
head=new Node;
p=p->next;
q=q->next;
//p=p->next;
while(p&&q)
{
if(p->b>q->b)
{
m->next=p;
//p->next=NULL;//这里该不该有这句呢,,我想它插入m中,应该为NULL。。而它后面又那句p=p->next;,,该怎么处理呢?
p=p->next;
m=m->next;
}
else if(p->b<q->b)
{
m->next=q;
//q->next=NULL;
q=q->next;
m=m->next;
}
else if((p->b)==(q->b))
{
(p->a)+=(q->a);
m->next=p;
//p->next=NULL;
p=p->next;
q=q->next;
m=m->next;
}
}
}
int main()
{
Node *head1,*head2,*head;
intit(head1);
intit(head2);
print(head1);
print(head2);
merge(head1,head2,head);
print(head);
return 0;
}
2楼小改一下:
if(p)
{
m->next=p;
}
if(q)
{
m->next=q;
}
struct Node
{
int a,b;
Node* next;
};
void intit(Node* &head)
{
int nit,pit;
head=new Node;
Node* m=head;
m->next=0;
cout<<"Please input :\n";
while(cin>>nit>>pit && !(nit==0&&pit==0))
{
Node* p=new Node;
p->a=nit;
p->b=pit;
m->next=p;
p->next=NULL;
m=m->next;
}
}
void clear(Node* &head)
{
Node* p=head;
while(p)
{
head=head->next;
delete p;
p=head;
}
}
void print(const Node* head)
{
const Node* p=head;
p=p->next;
if(p)
{
cout<<p->a<<"X^"<<p->b<<' ';
p=p->next;
}
while(p)
{
if(p->a>0)
cout<<'+';
cout<<p->a<<"X^"<<p->b<<' ';
p=p->next;
}
cout<<'\n';
}
void merge(Node* &head1,Node* &head2,Node* &head)
{
Node* p=head1;
Node* q=head2;
head=new Node;
Node* m=head;
m->next=0;
p=p->next;
q=q->next;
while(p&&q)
{
if(p->b>q->b)
{
m->next=p;
p=p->next;
m=m->next;
}
else if(p->b<q->b)
{
m->next=q;
q=q->next;
m=m->next;
}
else if((p->b)==(q->b))
{
(p->a)+=(q->a);
m->next=p;
p=p->next;
{
Node* tmp=q;
q=q->next;
delete tmp;
}
m=m->next;
}
}
while(p)
{
m->next=p;
}
if(q)
{
m->next=q;
}
delete head1;
delete head2;
head1=0;
head2=0;
}
int main()
{
Node *head1,*head2,*head;
intit(head1);
intit(head2);
print(head1);
print(head2);
merge(head1,head2,head);
print(head);
clear(head);
return 0;
}