1.链表查找
先对比第一个节点的数据域是否是想要的数据,如果是就直接返回,如果不是则继续查找下一个节点,如果到达最后一个节点的时候都没有匹配的数据,说明要查找数据不存在。
2.代码实现
//查找节点
//按学号查找
STU *link_search_num(STU *head, int num)
{
assert(head);
STU *p_mov = NULL;
//定义指针变量保存第一个节点地址
p_mov = head;
//当没有到达最后一个节点的指针域时循环继续
while (p_mov != NULL)
{
//如果找到是当前节点的数据,则返回当前节点的地址
if (p_mov->num == num)
{
return p_mov;
}
else
{
//如果没有找到,则继续对比下一个节点的指针域
p_mov = p_mov->next;
}
}
//当循环结束的时候还没有找到,说明要查找的数据不存在,返回NULL进行标识
return NULL;//没有找到
}
//按姓名查找
STU *link_search_name(STU *head, char *name)
{
assert(head);
STU *p_mov = NULL;
p_mov = head;
while (p_mov != NULL)
{
if (strcmp(p_mov->name, name) == 0)
{
return p_mov;
}
else
{
p_mov = p_mov->next;
}
}
return NULL;
}