若要在O(1)的时间复杂度上实现两个循环链表头尾相接,则对应两个循环链表各设置一个指针,分别指向( )。

admin2019-12-10  20

问题 若要在O(1)的时间复杂度上实现两个循环链表头尾相接,则对应两个循环链表各设置一个指针,分别指向(    )。

选项 A、各自的头结点
B、各自的尾结点
C、各自的第一个元素结点
D、一个表的头结点,另一个表的尾结点

答案B

解析 两个循环链表头尾相接,需要改变头结点和尾结点之间的指针,而这个指针是从尾结点指向头结点的,所以只有将两个指针分别指向自己循环链表的尾结点才能完成操作。
    实现的代码如下:        void connect(LNode*A,LNode*&B)  //假设A、B为非空带头结点的循环链表的尾指针    LNode*p=A->next;    //保存A表的头结点    A->next=B->neXt->next;    //B的开始结点链接到A表尾    free(B->next);    //释放B表的头结点B->next=p;//将B 表的尾结点链接到A表的头结点
    【小技巧】一般出现循环链表的题目时,尾指针的作用总是大于头指针的,因为头指针可通过尾指针直接得到。因此,这样的题目一般都会选择带尾指针的选项。   
转载请注明原文地址:https://kaotiyun.com/show/lm3i777K
0

相关试题推荐
最新回复(0)