下列叙述中,正确的是( )。 Ⅰ.非空循环单链表head的尾结点p满足p→next=head Ⅱ.带头结点的循环单链表的头指针为head,如果head→next→next→next=head成立,则该单链表的长度为3 Ⅲ.静态链表中的指针表示的是下一个元素在数组中的位置 Ⅳ.将长度为n的单链表链接在长度为m的单链表之后的算法时间复杂度为O(1)
【正确答案】
C
【答案解析】解析:Ⅰ:非空循环单链表的尾结点指针应该指向链表头,即p→next=head,故Ⅰ正确。 Ⅱ:head指向头结点,head→next就指向第一个结点。既然head→next→next→next=head,说明此循环链表共有3个结点(包含头结点),而单链表中增加头结点仅仅是为了更方便地进行插入和删除操作,它并不存储线性表的元素,故不能算为单链表结点,故此单链表的长度为2,故Ⅱ错误。 Ⅲ:静态链表中的指针所存储的不再是链表中的指针域,而是其下一个结点在数组中的位置,即数组下标,故Ⅲ正确。 Ⅳ:将链表连接起来只需O(1)的操作,但找到具有m个结点链表的尾结点需遍历该链表,所以时间复杂度应该为O(m),故Ⅳ错误。