设rear是指向带头结点的非空循环单链表的尾指针,则删除表首结点的操作可表示为( )

设rear是指向带头结点的非空循环单链表的尾指针,则删除表首结点的操作可表示为( )


A、

p=rear;
rear=rear->next;
free (p) 


B、

rear=rear->next;
free(rear);


C、

rear=rear->next->next;
free (rear);


D、

p=rear->next->next;
rear->next->next=p->next;

free(p);


【正确答案】:D
【题目解析】:

此题是考查链表的操作,在单向循环链表中要删除头结点时,需要的操作为修改尾结点的下一个结点指针变量,指向第二结点,释放被删除结点。

如图,尾指针rear指向单链表的第一个结点,即头结点;头结点又指向表首结点。

故首先定义一个p指向表首结点,即p=rear->next->next;

再修改尾结点的下一个结点指针变量,指向第二结点;

最后释放表首结点p。