下面的 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;
}
- A.
if(pHead) {p->next = pHead->next, pHead->next->prev = p;} - B.
if(pHead->next) {p->next = pHead->next, pHead->next->prev = p;} - C.
p->next = pHead->next, pHead->next->prev = p; - D. 触发异常。不能对空指针进行操作。