有关下面 C++ 代码的说法正确的是( )。
typedef struct LinkList {
int data;
LinkList* next;
LinkList* prev;
} LinkList, LinkNode;
bool ListInit(LinkList* &L) {
L = new LinkNode;
if (!L) return false;
L->next = NULL;
L->prev = NULL;
L->data = -1;
return true;
}看到结构体里同时定义了 next 和 prev 两个指针,先别急着选,想想双向链表的核心特征就是能往两头走,再看初始化是不是把两头都封死了,这就定调了。
最容易栽跟头的就是被‘链表’这两个字带着走,默认以为链表就是单向的,忽略 prev 的存在;还有看到指针就下意识联想循环链表,却没细看初始化里 next 和 prev 都赋了 NULL,根本没成环;另外选项 D‘指针链表’是个大杂烩术语,看似万能实则空洞,专门用来干扰那些不敢确定具体类型的考生。
本题锁定 GESP 六级《数据结构》模块的核心考点:透过代码表象识别链表类型。六级不再考基础语法,而是要求考生能一眼看穿指针背后的逻辑结构。命题人把这道题放在这里,就是要卡住那些‘只知链表会增删,却分不清链表类型’的考生——这是六级到七级的分水岭。