题目
一个带头结点[1]的链表[2]L,指针p指向链表L中间的某个结点(非首尾结点)。对于以下代码段:q = p->next;p->next = q->next;q->next = L->next;L->next = q;其功能是:()A. 将p指向结点移到q指向结点后B. 将q指向结点移到p指向结点后C. 将p指向结点插入头结点后D. 将q指向结点插入头结点后
一个带头结点[1]的链表[2]L,指针p指向链表L中间的某个结点(非首尾结点)。对于以下代码段:
q = p->next;
p->next = q->next;
q->next = L->next;
L->next = q;
其功能是:()
A. 将p指向结点移到q指向结点后
B. 将q指向结点移到p指向结点后
C. 将p指向结点插入头结点后
D. 将q指向结点插入头结点后
题目解答
答案
首先,代码的第一行q = p->next;将q指针指向p的下一个结点。第二行p->next = q->next;将p的下一个结点指向q的下一个结点,这相当于将q从链表中“断开”。接着,q->next = L->next;将q的下一个结点指向头结点L的下一个结点(即链表的第一个有效结点)。最后,L->next = q;将q插入到头结点之后。因此,这段代码的功能是将q指向的结点插入到头结点之后。
答案: D