?? 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 + -