单循环链表的合并
- 设两个单循环链表A和B(都带头结点,设A和B都非空),合并A和B的思路是:
- 将A最后一个结点的指针域指向B的第一个结点(即指向头结点后的那个结点,首元结点),然后将B的最后一个元素的指针域指向A的头结点,释放B的头结点。
- 算法:
- 1.获取A的最后一个结点,设为p1;
- 2.获取B的最后一个结点,设为p2;
- 3.令p1的指针域指向B的第一个结点,p1->next=B(头)->next;
- 4.令p2的指针域指向A的头结点,p2->next=A(头)。
void Combine(LinkList L1, LinkList L2)
{
LNode *p1;
LNode *p2;
p1 = L1->next;
p2 = L2->next;
LNode *s1;
LNode *s2;
while (p1 != L1)
{
if (p1->next == L1)
{
s1 = p1; // s1指向表L1的最后一个结点
break;
}
p1 = p1->next; // 指针后移
}
while (p2 != L2)
{
if (p2->next == L2)
{
s2 = p2;//s2指向表L2的最后一个结点
break;
}
p2 = p2->next;//指针后移
}
s1->next = L2->next; // L1尾部接到L
本文介绍了如何合并两个带头结点的单循环链表。通过设置最后一个结点的指针,将链表A的末尾连接到链表B的开头,再将链表B的末尾指向链表A的头结点,实现合并。详细步骤包括获取每个链表的末尾结点并进行指针修改,最后展示代码实现和运行结果。
最低0.47元/天 解锁文章
4967

被折叠的 条评论
为什么被折叠?



