64,636
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
#include <stdlib.h>
using namespace std;
struct itm
{
int a;
int m;
itm *next;
};
itm *insert1()
{
itm *p,*first,*pp;
p=NULL;
first=p;
int a1[4]={6,-4,2,7};
int m1[4]={5,3,1,0};
for(int i=0;i <=3;i++)
{
p=new itm;
if(first==NULL) first = p;
else pp->next = p;
p->a=a1[i];
p->m=m1[i];
p->next = NULL;
pp = p;
}
return first;
}
itm *insert2()
{
itm *q,*second,*pq;
q=NULL;
second=q;
int a2[3]={7,8,3};
int m2[3]={4,3,1};
for(int j=0;j <=2;j++)
{
q=new itm;
if(second==NULL) second = q;
else pq->next = q;
q->a=a2[j];
q->m=m2[j];
q->next = NULL;
pq = q;
}
return second;
}
itm *slect(itm *&m,itm *&n)
{
itm *p,*q,*phead,*qhead;
phead=NULL;
qhead=phead;
p=m;
q=n;
while(q!=NULL&&p!=NULL)
{
if(p->m > q->m)
{
if(qhead==NULL)
{
qhead=p;
phead=qhead;
}
else
qhead->next=p;
p=p->next;
}
if(p->m < q->m)
{
if(qhead==NULL)
{
qhead=p;
phead=qhead;
}
else
qhead->next=q;
q=q->next;
qhead = qhead->next;
}
if(p->m == q->m)
{
if(p->a + q->a==0)
{
p=p->next;
q=q->next;
}
else
{
p->a=(p->a+q->a);
if(qhead==NULL)
{
qhead=p;
phead=qhead;
}
else
qhead->next=p;
qhead=qhead->next;
q=q->next;
p=p->next;
}
}
}
if (p!=NULL)
{
qhead->next=p;
}
if (q!=NULL)
{
qhead->next=q;
}
return phead;
}
void print(itm *phead)
{
itm *r=phead;
while(r!=NULL)
{
cout <<r->a <<endl;
cout <<r->m <<endl;
r=r->next;
}
}
int main(int argc, char *argv[])
{
itm *p,*q,*r;
p=insert1();
q=insert2();
r=slect(p,q);
print(r);
system("PAUSE");
return 0;
}