(1.2.1.2)单链表:有序链表合并、交集、差集

Node *Merge(Node *head1,Node *head2)
{
    Node *p1 = NULL;
    Node *p2 = NULL;
    Node *head = NULL;

    //找出两个链表中第一个结点较小的结点,head记录较小结点的头结点
    if(head1->next->data < head2->next->data)
    {
        head = head1;
        p1 = head1->next;
        p2 = head2->next;
    }
    else
    {
        head = head2;
        p2 = head2->next;
        p1 = head1->next;
    }

    Node *pcur = head;

    //在两个链表中遍历比较,将值较小的结点链接到pcur结点后
    while(p1 != NULL && p2 != NULL)
    {
        if(p1->data <= p2->data)
        {
            pcur->next = p1;
            pcur = p1;
            p1 = p1->next;
        }
        else
        {
            pcur->next = p2;
            pcur = p2;
            p2 = p2->next;
        }
    }
    //将p1或p2剩余的结点链到pcur之后,完成整个合并的过程
    if(p1 != NULL)
        pcur->next = p1;
    if(p2 != NULL)
        pcur->next = p2;
    
    return head;
}


差集:不同大小:每次输出最小的元素    相同大小:都不输出

2579----579--79---9
578------578--78---8




交集:相等才输出

你可能感兴趣的:((1.2.1.2)单链表:有序链表合并、交集、差集)