设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。