#3348. [GESP202312 五级 C++] 第 5 题
[GESP202312 五级 C++] 第 5 题
下面的C++代码用于将字符串保存到带头节点的双向链表中,并对重复的串计数,然后将最新访问的串的节点放在链头便于查找。横线处应填入代码是( )。
typedef struct Node{
string str;
int ref;
struct Node *next, *prev;
}Node;
Node * Insert(Node *pHead, string s)
{
Node *p = pHead->next;
Node *q;
while(p){
if(p->str == s){
p->ref++;
p->next->prev = p->prev;
p->prev->next = p->next;
break;
}
p=p->next;
}
if(!p) {
p = new Node;
p->str = s;
p->ref=0;
p->next = p->prev = NULL;
}
______________________________________
pHead->next = p, p->prev = pHead;
return pHead;
}
{{ select(1) }}
if(pHead) {p->next = pHead->next, pHead->next->prev = p;}if(pHead->next) {p->next = pHead->next, pHead->next->prev = p;}p->next = pHead->next, pHead->next->prev = p;- 触发异常,不能对空指针进行操作。