PTA 02-线性结构1 两个有序链表序列的合并 (15分)

来源:互联网 发布:站群软件 编辑:程序博客网 时间:2024/04/30 04:17

题目地址

头结点必须新设一个,因为输出中的第二三行应该是访问L1和L2后得到的结果,即NULL。表明评测是要访问L1和L2的头结点的,所以你不能用这两个链表的头结点作为新的节点。个人认为最后应该释放掉L1和L2头结点,但不释放也同样可以过。这是测试过的答案:

List Merge(List L1, List L2){
    List L = (List)malloc(sizeof(struct Node)), r = L;    List p1 = L1->Next, p2 = L2->Next;    L->Next = NULL;    while (p1 && p2){if (p1->Data > p2->Data){    L->Next = p2;    p2 = p2->Next;    L = L->Next;}else{    L->Next = p1;    p1 = p1->Next;    L = L->Next;}    }    if (p1) L->Next = p1;    if (p2) L->Next = p2;    free(L1);    free(L2);    L1->Next = L2->Next = NULL;    return r;}


0 0
原创粉丝点击