#include<stdio.h> #define ERROR -1; typedef struct NODE { int xishu; int zhishu; struct NODE *next; }NODE,*LNODE; int main() { LNODE la=(LNODE)malloc(sizeof(NODE)); LNODE lb=(LNODE)malloc(sizeof(NODE)); LNODE p,q,temp; LNODE ta,tb; int i,j,t; int n; int count; int sum; la->next=NULL; lb->next=NULL; ta=la; tb=lb; printf("please input the A number:"); scanf("%d",&n); for(i=0;i<n;i++) { p=(LNODE)malloc(sizeof(NODE)); if(!p) return ERROR; scanf("%d %d",&(p->xishu),&(p->zhishu)); p->next=NULL; ta->next=p; ta=p; } printf("please input the B number:"); scanf("%d",&n); for(i=0;i<n;i++) { p=(LNODE)malloc(sizeof(NODE)); if(!p) return ERROR; scanf("%d %d",&(p->xishu),&(p->zhishu)); p->next=NULL; tb->next=p; tb=p; } p=la; q=lb; while(q->next!=NULL&&p->next!=NULL) { if((p->next->zhishu)>(q->next->zhishu)) { temp=q->next; q->next=q->next->next; temp->next=p->next; p->next=temp; p=temp; } else { if(p->next->zhishu==q->next->zhishu) { sum=p->next->xishu+q->next->xishu; if(!sum) //如果和为零 { temp=p->next; p->next=temp->next; free(temp); temp=q->next; q->next=temp->next; free(temp); } else { p->next->xishu=sum; p=p->next; q=q->next; } } else { p=p->next; } } } if(NULL==p->next) { p->next=q->next; } p=la->next; while(p) { printf("(%d %d)/n",p->xishu,p->zhishu); p=p->next; } return 0; }