考虑以下 C函数将单链表作为输入参数。
typedef struct node {
int value;
struct node * next;
}
Node;
Node * modify_list(Node * head) {
Node * p, * q;
if ((head == NULL || (head-> next == NULL))
return head;
q = NULL;
p = head;
while (p-> next-> next != NULL) {
q = p;
p = p -> next;
}
q -> next = p -> next;
p -> next = head;
head = p;
return head;
}
它修改列表
(A)通过将最后一个元素移动到列表的前面并返回修改后的列表。
(B)通过将倒数第二个元素移动到列表的前面并返回修改后的列表。
(C)通过将第一个元素移动到列表的倒数第二个并返回修改后的列表。
(D)通过将第一个元素移动到列表的最后一个元素并返回修改后的列表。答案:(乙)
说明:函数modify_list(Node * head) 通过将倒数第二个元素移动到列表的前面来修改列表,并返回修改后的列表。
选项(B)是正确的。
这个问题的测验