题23

题目

一个链表最常用的操作是在末尾插入结点和删除结点,则选用 ( ) 最节省时间.
A. 带头结点的双循环链表
B. 单循环链表
C. 带尾指针的单循环链表
D. 单链表

分析

由循环单链表的定义不难推出循环双链表。
不同的是, 在循环双链表中, 头结点的 prior 指针还要指向表尾结点,如图 2.13 所示。当某结点 *p 为尾结点时, p->next == L ;
当循环双链表为空表时, 其头结点的 prior 域和 next 域都等于 L
和双向链表区分一下,循环的意思是,首位相连
循环双链表也就是,双链表的基础上还要再循环

A
在链表的末尾插入和删除一个结点时, 需要修改其相邻结点的指针域。
而寻找尾结点及尾结点的前驱结点时, 只有带头结点的双循环链表所需要的时间最少。