16

    xiaoxiao2023-03-24  3

    问题

           已知L1、L2分别为两循环单链表的头结点指针,m,n分别为L1、L2表中数据节点个数。要求设计一算法,用最快速度将两表合并成一个带头结点的循环单链表。

    分析

          最快的速度,遍历长度较短的链表,找到尾结点,然后将该链表插入到长度较长的链表中,即可。

    代码

    LinkList mergeList(LinkList &l1, int m, LinkList &l2, int n){ if(m > n) {///l1的长度大于l2 将l2插入到l1中 LNode *p = l2 -> next; while(p -> next != l2) {///注意这个条件 p = p -> next; } p -> next = l1 -> next; l1 -> next = l2 -> next; free(l2); return l1; }else {///将l1插入到l2中 LNode *p = l1 -> next; while(p ->next != l1) { p = p -> next; } p -> next = l2 -> next; l2 -> next = l1 -> next; free(l1); return l2; } }

    源代码

    http://123.206.59.223:8080/code/code/16.rar
    转载请注明原文地址: https://ju.6miu.com/read-1201450.html
    最新回复(0)