/*

  • Definition for singly-linked list.
  • struct ListNode {
  • int val;
    
  • ListNode *next;
    
  • ListNode(int x) : val(x), next(NULL) {}
    
  • }; */

ListNode* mergeCircularLists(ListNode* h1, ListNode* h2) { if (!h1) return h2; if (!h2) return h1; ListNode *p1 = h1->next, *p2 = h2->next; ListNode *newHead = new ListNode(0); ListNode *tail = newHead; while (p1 != h1 && p2 != h2) { if (p1->val <= p2->val) { tail->next = p1; p1 = p1->next; } else { tail->next = p2; p2 = p2->next; } tail = tail->next; } if (p1 == h1) { tail->next = h2; while (p2->next != h2) p2 = p2->next; p2->next = tail; } else { tail->next = h1; while (p1->next != h1) p1 = p1->next; p1->next = tail; } ListNode *newH = newHead->next; delete newHead; return newH; }

现在给你两个有序的环形单向链表的头指针这个头指针分别指向两个链表的表头结点不存放有效数据表头结点的下一个结点存储着第一个有效数据因为是环形链表所以最后一个结点指回表头结点。下面要求你在c++中完成单个函数的定义实现两个有序的环形单向链表的合并并且合并之后的环形链表仍是有序的。

原文地址: https://www.cveoy.top/t/topic/Wsr 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录