📄 list.cpp
字号:
// List.cpp: implementation of the CList class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Nurse.h"
#include "List.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CList::~CList()
{
// remove_all(); // 释放所有申请空间
}
// 通过ID查找护理信息
CListItem* CList::findByID(CString id)
{
CListItem *ptr = m_pHead;
while(ptr)
{
if(ptr->m_szWorkerID == id)
{
break;
}
ptr = ptr->m_pNext;
}
return ptr;
}
// 返回前一个指针
CListItem* CList::preview(CListItem *p)
{
if(p == m_pHead) // 如果当前指针在头部则返回0
{
return 0;
}
else
{
CListItem *ptr = m_pHead;
while(ptr && ptr->m_pNext != p)
{
ptr = ptr->m_pNext;
}
return ptr;
}
}
// 插入链表尾部
void CList::insert_end(CListItem *p)
{
if(!m_pTail) // 如果为空链表
{
m_pHead = m_pTail = p;
}
else // 插入链表尾部,同时更新尾指针
{
m_pTail->m_pNext = p;
m_pTail = p;
}
++m_nSize; // 信息个数加1
}
// 删除所有护理信息
void CList::remove_all()
{
CListItem *ptr = m_pHead;
CListItem *pCurrent = 0;
while(ptr)
{
pCurrent = ptr;
ptr = ptr->m_pNext;
delete pCurrent;
}
pCurrent = 0;
m_pHead = m_pTail = 0;
m_nSize = 0;
}
// 删除指定id的护理信息
bool CList::removeByID(CString id)
{
CListItem *ptr = findByID(id);
if(!ptr) // 如果护理信息不存在则返回 "flase"
return false;
if(ptr == m_pHead) // 要删除的护理信息在链表头部
{
m_pHead = ptr->m_pNext;
if(!m_pHead) //删除节点后链表为空时至尾指针为0
{
m_pTail = 0;
}
delete ptr;
}
else
{
CListItem *pCurrent = preview(ptr); // 返回要删除信息的上一个
// 信息指针
if(ptr == m_pTail) // 要删除的护理信息在链表尾部
{
pCurrent->m_pNext = 0;
m_pTail = pCurrent;
delete ptr;
}
else
{
pCurrent->m_pNext = ptr->m_pNext;
delete ptr;
}
}
--m_nSize; // 护理信息数减1
ptr = 0;
return true; // 返回“true”表示成功删除
}
// 查找在某年月以后出生的护理信息
void CList::findAfterDate(CListItem *head,CString date)
{
CListItem *ptr = head;
// 遍历链表查找符合条件的信息
while(ptr)
{
if(ptr->m_date > date) // 符合条件添加到临时链表中
{
insert_end(ptr);
}
ptr = ptr->m_pNext;
}
}
// 查找在某年月以前出生的护理信息
void CList::findBeforeDate(CListItem* head,CString date)
{
CListItem *ptr = head;
// 遍历链表查找符合条件的信息
while(ptr)
{
if(ptr->m_date < date) // 符合条件添加到临时链表中
{
insert_end(ptr);
}
ptr = ptr->m_pNext;
}
}
// 根据护理级别查找信息
void CList::findByTechnical(CListItem* head,CString technical)
{
CListItem *ptr = head;
// 遍历链表查找符合条件的信息
while(ptr)
{
if(ptr->m_szTechnical == technical) // 符合条件添加到临时链表中
{
insert_end(ptr);
}
ptr = ptr->m_pNext;
}
}
// 根据婚姻状况查找信息
void CList::findByMarriage(CListItem* head,CString marriage)
{
CListItem *ptr = head;
// 遍历链表查找符合条件的信息
while(ptr)
{
if(ptr->m_szMarriage == marriage) // 符合条件添加到临时链表中
{
insert_end(ptr);
}
ptr = ptr->m_pNext;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -