双向链表的查找节点。
考点:双向链表的操作
出现频率:★★★★
解析:
使用right指针遍历,直至找到数据为data的节点,如果找到节点,返回节点,否则返回NULL。
1 //查找节点,成功则返回满足条件的节点指针,否则返回NULL
2 DbNode *FindNode(DbNode *head, int data) //参数1是链表的表头节点
3 { //参数2是要查找的节点,其数据为data
4 DbNode *pnode = head;
5
6 if (head == NULL) //链表为空时返回NULL
7 {
8 return NULL;
9 }
10
11 /*找到数据或者到达链表末尾退出while循环*/
12 while (pnode->right != NULL && pnode->data != data)
13 {
14 pnode = pnode->right; //使用right指针遍历
15 }
16
17 //没有找到数据为data的节点,返回NULL
18 if (pnode->right == NULL)
19 {
20 return NULL;
21 }
22
23 return pnode;
24 } |