就和双链表的需求一样,但是在这里我们不设置前驱节点,而是把单链表的首位连接起来,形成循环链表。
为了使非空链表的空链表处理起来一样,我们通常设置一个头结点,当然这并不是必须的,而是这样做非常方便。
实际上循环链表和单链表的主要差别在于循环的判断条件上,原来是判断p->next是否为空,现在是p->next不等于头节点,则循环未结束。
进一步对链表进行处理,我们引进尾指针的定义。
我们只需要这样做:
p=rearA->next; //保留链表A的头节点(第一步)
rearA->next=rearB->next->next; //将本是指向B链表的第一个节点(非头节点)赋值给rearA->next(第二步)
rearB->next=p; //将原A链表的头节点赋值给rearB->next(第三步)
free(p);
这样一来,A链表和B链表合二为一,而且取消了A链表的头节点(A链表原头节点的内存被释放)。
原文:https://www.cnblogs.com/jiameng991010/p/11304824.html