数据结构链表—— 循环链表

就和双链表的需求一样,但是在这里我们不设置前驱节点,而是把单链表的首位连接起来,形成循环链表

为了使非空链表的空链表处理起来一样,我们通常设置一个头结点,当然这并不是必须的,而是这样做非常方便。

实际上循环链表和单链表的主要差别在于循环的判断条件上,原来是判断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链表原头节点的内存被释放)。

猜你喜欢

转载自www.cnblogs.com/jiameng991010/p/11304824.html