📄 objlist.cpp
字号:
// ObjList.cpp: implementation of the ObjList class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ObjList.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
ObjList::ObjList()
{
m_pHeadNode = NULL;
m_pTailNode = NULL;
m_iCount = 0;
}
ObjList::~ObjList()
{
}
void ObjList::AddHead(void *pData)
{
ObjNode *pNode = new ObjNode(); //新建节点以容纳pData
pNode->m_pData = pData;
pNode->m_pPrev = NULL; //前面肯定是NULL
pNode->m_pNext = m_pHeadNode; //ObjNode为头,原来的头后移
if(m_pHeadNode!=NULL){
m_pHeadNode->m_pPrev = pNode;
}
m_pHeadNode = pNode; //更新头指针
IncreaseCount();
if(m_iCount==1){
m_pTailNode=pNode;
}
}
void ObjList::AddTail(void *pData)
{
ObjNode *pNode = new ObjNode(); //新建节点以容纳pData
pNode->m_pData = pData;
pNode->m_pPrev = m_pTailNode; //原来的尾部变成倒数第二个
pNode->m_pNext = NULL; //尾部的后面应为NULL
if(m_pTailNode!=NULL){
m_pTailNode->m_pNext = pNode;
}
m_pTailNode = pNode; //更新尾指针
IncreaseCount();
if(m_iCount==1){
m_pHeadNode = pNode;
}
}
void * ObjList::RemoveHead()
{
ObjNode *pNode = m_pHeadNode;
m_pHeadNode = m_pHeadNode->m_pNext;
if(m_pHeadNode!=NULL){
m_pHeadNode->m_pPrev = NULL;
}
void *pRet = pNode->m_pData;
delete pNode;
DecreaseCount();
return pRet;
}
void * ObjList::RemoveTail()
{
ObjNode *pNode = m_pTailNode;
m_pTailNode = m_pTailNode->m_pPrev;
if(m_pTailNode!=NULL){
m_pTailNode->m_pNext = NULL;
}
void *pRet = pNode->m_pData;
delete pNode;
DecreaseCount();
return pRet;
}
int ObjList::GetCount()
{
return m_iCount;
}
void * ObjList::FindIndex(int iIndex)
{
if( iIndex >= m_iCount ){
return NULL;
}
ObjNode *pNode = m_pHeadNode;
for(int i=0; i<iIndex; i++){
pNode = pNode->m_pNext;
}
return pNode->m_pData;
}
void ObjList::IncreaseCount()
{
m_iCount++;
}
void ObjList::DecreaseCount()
{
m_iCount--;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -