单选题
若对一个链表最常用的操作是在末尾插入结点和删除尾结点,则采用仅设尾指针的单向循环链表(不含头结点)时,______。
【正确答案】
C
【答案解析】[要点解析] 设尾指针的单项循环链表(不含头结点)如下图所示。
[*]
设节点的指针域为next,新节点的指针为s,则在尾指针所指节点后插入节点的操作为:
s->next=t->next;t->next=s;t=s;
也就是插入操作的时间复杂度为O(1)。
要删除尾指针所指结点,必须通过遍历操作找到尾结点的前驱结点,其操作序列如下:
if (t->next==t) free(t);
else {
p=t->next;
while (p->next!=t)
p=p->next;
p->next=t->next;
free (t);
t=p;
}
也就是说,删除操作的时间复杂度为O(n)。