剑指offer系列源码-合并两个排序的链表

来源:互联网 发布:怎么申请淘宝网账号 编辑:程序博客网 时间:2024/04/16 12:06
题目1519:合并两个排序的链表时间限制:1 秒内存限制:128 兆特殊判题:否提交:1309解决:615题目描述:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。(hint: 请务必使用链表。)输入:输入可能包含多个测试样例,输入以EOF结束。对于每个测试案例,输入的第一行为两个整数n和m(0<=n<=1000, 0<=m<=1000):n代表将要输入的第一个链表的元素的个数,m代表将要输入的第二个链表的元素的个数。下面一行包括n个数t(1<=t<=1000000):代表链表一中的元素。接下来一行包含m个元素,s(1<=t<=1000000)。输出:对应每个测试案例,若有结果,输出相应的链表。否则,输出NULL。样例输入:5 21 3 5 7 92 40 0样例输出:1 2 3 4 5 7 9NULL

#include<stdio.h>#include<iostream>using namespace std;struct ListNode{    int value;    ListNode* next;};ListNode* megerList(ListNode* aHead,ListNode* bHead){    if(aHead==NULL){        return bHead;    }    if(bHead==NULL){        return aHead;    }    ListNode* megeredHead = NULL;    if(aHead->value<bHead->value){            megeredHead = aHead;            megeredHead->next = megerList(aHead->next,bHead);    }else{            megeredHead = bHead;            megeredHead->next = megerList(aHead,bHead->next);    }    return megeredHead;}int main(){    int n,m;    ListNode* aNode;    ListNode* aHead;    ListNode* bNode;    ListNode* bHead;    while(scanf("%d%d",&n,&m)!=EOF){        if(n<=0&&m<=0){            printf("NULL\n");            continue;        }        //构造链表       for(int i=0;i<n;i++){           ListNode* pNew = new ListNode();            scanf("%d",&pNew->value);            pNew->next=NULL;            if(i==0){                 aNode = aHead = pNew;            }else{                aNode->next = pNew;                aNode = pNew;            }       }       for(int i=0;i<m;i++){            ListNode* pNew = new ListNode();            scanf("%d",&pNew->value);            pNew->next=NULL;            if(i==0){                 bNode = bHead = pNew;            }else{                bNode->next = pNew;                bNode = pNew;            }       }        ListNode* megeredHead = megerList(aHead,bHead);        while(megeredHead->next){            printf("%d ",megeredHead->value);            megeredHead = megeredHead->next;       }       printf("%d\n",megeredHead->value);    }    return 0;}
oj地址
0 0