单链表的归并
#include#include typedef struct Node{ int data; struct Node *next; }Node,*ListNode; void CreatList (ListNode name,int n){ ListNode temp=name,p; for(int i=0;i p=(ListNode)malloc(sizeof(Node)); p->data = 0; p->next = NULL; temp->next =p; temp=p; } } int main() { int m,n; scanf("%d %d",&m,&n); ListNode A=(ListNode)malloc(sizeof(Node)); ListNode B=(ListNode)malloc(sizeof(Node)); CreatList(A,m); CreatList(B,n); ListNode a=A->next; ListNode b=B->next; while(a) { scanf("%d",&a->data); a=a->next; } while(b) { scanf("%d",&b->data); b=b->next; } ListNode atail=A->next; ListNode btail=B->next; ListNode answer=(ListNode)malloc(sizeof(Node)); ListNode temp=answer; while(btail&&atail) { if(atail->data < btail->data)//b大 { if(atail->next==NULL) { temp->next=atail; atail=atail->next; temp=temp->next; temp->next=btail; break; } if(btail->next==NULL) { temp->next=atail; temp=temp->next; atail=atail->next; temp->next=btail; temp=temp->next; temp->next=atail; break; } temp->next=atail; temp=temp->next; atail=atail->next; } else//a大 { if(btail->next==NULL) { temp->next=btail; btail=btail->next; temp=temp->next; temp->next=atail; break; } if(atail->next==NULL) { temp->next=btail; temp=temp->next; btail=btail->next; temp->next=atail; temp=temp->next; temp->next=btail; break; } temp->next=btail; temp=temp->next; btail=btail->next; } } int aaa[m+n]; for(int i=(m+n-1);i>=0;i--) { aaa[i]=answer->next->data; answer=answer->next; } for(int i=0;i printf("%d ",aaa[i]); } return 0; }



