📄 findlist.cpp
字号:
#include "studentlist.h" //学生链表类头文件
//函数功能:依据形参得到不同的参数情况实现按学号、姓名查找、姓名模糊查找,查找到的学生地址存放到一个新建的链表中
//输入参数:无
//输出参数:无
//返回值:返回找到的学生个数
//修改人:邹明上
//修改时间:2006.07.03
int CStudentList::Find(FindList* pFind_H,char* cFindStr,int nNum)
{
pFind_H->nNo = 0; //初始化查找链表的三个参数
pFind_H->pNext = NULL;
pFind_H->pNow = NULL;
FindList* pEnd = NULL;
FindList* pNew = NULL;
int nI = 0;
for(m_pMove = m_pHead;m_pMove != NULL;m_pMove = m_pMove->m_pNext)
{
if((!strcmp(m_pMove->m_sId,cFindStr)&&(nNum == 1))|| //判断节点中学号是否与输入的学号相同
(!strcmp(m_pMove->m_sName,cFindStr)&&(nNum == 2))) //判断节点中姓名是否与输入的姓名相同
{ //实现按不同方式查找时,判断是否满足查找条件
pNew = new FindList;
pNew->nNo = ++nI;;
pNew->pNow = m_pMove;
pNew->pNext = NULL;
if(pFind_H->pNext == NULL)
{
pFind_H->pNext = pNew;
pEnd = pNew;
}
else
{
pEnd->pNext = pNew;
pEnd = pNew;
}
if(nNum == 1) //按学号查找时,因为学号是唯一的,当找到一个相同学号时,就终止for循环,提高程序效率
{
break;
}
}
else if(nNum == 3)
{
if(strlen(cFindStr) == 0) //当输入的字符串为空时,返回未找到学生姓名
{
return 0;
}
else if(strstr(m_pMove->m_sName,cFindStr) != NULL)
{ //strstr函数判断m_pMove->m_sName字符串是否包含cFindStr字符串,不包含时返回为NULL
pNew = new FindList;
pNew->nNo = ++nI;
pNew->pNow = m_pMove;
pNew->pNext = NULL;
if(pFind_H->pNext == NULL)
{
pFind_H->pNext = pNew;
pEnd = pNew;
}
else
{
pEnd->pNext = pNew;
pEnd = pNew;
}
}
}
}
return nI;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -