中国青基会

查看完整版本: C/C++面试题大全 进入名企的敲门砖(连载)

jiameng1987 2009-6-30 14:50

C/C++面试题大全 进入名企的敲门砖(连载)

双向链表的查找节点。


考点:双向链表的操作
出现频率:★★★★
解析:
使用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     }

jiameng1987 2009-6-30 14:52

双向链表的打印。

更多内容请到“融智技术学苑”([url]http://www.rzchina.net[/url])了解。



考点:双向链表的操作
出现频率:★★★★
解析:
与测长的方法一样,使用right指针进行遍历。
1       //打印整个链表
2       void PrintList(DbNode *head)             //参数为链表的表头节点
3       {
4                DbNode *pnode = NULL;
5      
6                if (head == NULL)                  //head为NULL表示链表空
7                {
8                         return;
9                }
10              pnode= head;
11              while (pnode != NULL)
12              {
13                       printf("%d ", pnode->data);
14                       pnode = pnode->right;          //使用right指针遍历
15              }
16              printf("n");
17     }
页: [1]
查看完整版本: C/C++面试题大全 进入名企的敲门砖(连载)
Baidu