程序员经典1 双向链表的查找节点
考点:双向链表的操作出现频率:★★★★解析:使用 right 指针遍历,直至找到数据为 data 的节点,假如找到节点,返回节点,否则返回NULL
1 //查找节点,成功则返回满足条件的节点指针,否则返回 NULL2 DbNode *FindNode(DbNode *head, int data) //参数 1 是链表的表头节点3 { //参数 2 是要查找的节点,其数据为 data4 DbNode *pnode = head;56 if (head == NULL) //链表为空时返回 NULL7 {8 return NULL;9 }1011 /*找到数据或者抵达链表末尾退出 while 循环*/12 while (pnode->right
= NULL && pnode->data
= data)13 {14 pnode = pnode->right; //使用 right 指针遍历15 }1617 //没有找到数据为 data 的节点,返回 NULL18 if (pnode->right == NULL)19 {20 return NULL;21 }2223 return pnode;24 }2 考点:模板的特化的理解出现频率:★★★解析:模板的特化(template specialization)分为两类:函数模板的特化和类模板的特化
(1)函数模板的特化:当函数模板需要对某些类型进行尤其处理,称为函数模板的特化
例如:1 bool IsEqual(T t1, T t2)2 {3 return t1 == t2;4 }56 int main()7 {8 char str1[] = "Hello";9 char str2[] = "Hello";10 cout