?? teclinklist.cpp
字號(hào):
// tecLinkList.cpp
#include "stdio.h"
#include "windows.h"
#include "tecLinkList.h"
BOOL __stdcall tecListAdd(
TEC_LINKLIST *ptecList,
TEC_DATA_INFO *pData,
int nInsBef, /*1: First. 0: Last*/
DWORD *pdwErrCode)
{
int nCurPos = 1;
TEC_DATA_INFO *pFirst = NULL, *pCurr;
pCurr = (TEC_DATA_INFO*)calloc(1, sizeof(TEC_DATA_INFO));
pFirst = ptecList -> pData;
*pdwErrCode = 0;
ptecList -> nNum++;
if (!pFirst)
ptecList -> pData = pData;
else
{
pCurr = pFirst;
if (nInsBef == 1) // Add to first
{
ptecList -> pData = pData;
ptecList -> pData -> pNext = pCurr;
}
else if ((nInsBef == 0) ||
((ptecList -> nNum-1) < (int)nInsBef) ||
(nInsBef < 0)) // Add to last
{
while (pCurr)
{
if (!pCurr -> pNext)
{
pCurr -> pNext = pData;
pCurr = pData;
break;
}
else
pCurr = pCurr -> pNext;
}
}
else
{
while ((nCurPos < (nInsBef-1)) &&
(pCurr))
{
nCurPos++;
pCurr = pCurr -> pNext;
}
// Find the pos to add/insert
pData -> pPrev = pCurr;
pData -> pNext = pCurr -> pNext;
pCurr -> pNext = pData;
}
}
return TRUE;
}
// Delete the node and return node data
// if has pos info, delete the pos. 1 -> first; 0 -> last
// if has node data, delete the node
// pos first
BOOL __stdcall tecListDel(
TEC_LINKLIST *ptecList,
TEC_DATA_INFO *pData,
int *pnPos,
DWORD *pdwErrCode)
{
int nCurPos = 0;
TEC_DATA_INFO *pCurr, *pPrev;
pCurr = (TEC_DATA_INFO*)calloc(1, sizeof(TEC_DATA_INFO));
*pdwErrCode = 0;
pCurr = ptecList -> pData;
if (*pnPos < 0) // node data
{
while (pCurr)
{
nCurPos++;
if (pCurr -> nVal == pData -> nVal)
{
memcpy(pData, pCurr, sizeof(TEC_DATA_INFO));
if (nCurPos == 1) // Del First
ptecList -> pData = pCurr -> pNext;
else if (nCurPos == ptecList -> nNum) // Del Last
pPrev -> pNext = NULL;
else
pPrev -> pNext = pCurr -> pNext;
ptecList -> nNum--;
break;
}
pPrev = pCurr;
pCurr = pCurr -> pNext;
}
}
else // position
{
if ((*pnPos == 0) || (ptecList -> nNum < *pnPos)) // Last node
*pnPos = ptecList -> nNum;
while (pCurr)
{
nCurPos++;
if (nCurPos == *pnPos)
{
if (*pnPos == 1) // First node
{
memcpy(pData, pCurr, sizeof(TEC_DATA_INFO));
ptecList -> pData = pCurr -> pNext;
}
else
{
memcpy(pData, pCurr, sizeof(TEC_DATA_INFO));
pPrev -> pNext = pCurr -> pNext;
}
ptecList -> nNum--;
break;
}
pPrev = pCurr;
pCurr = pCurr -> pNext;
}
}
return TRUE;
}
BOOL __stdcall tecListFind(
TEC_LINKLIST strutecList,
TEC_DATA_INFO *pData,
int *pnPos,
DWORD *pdwErrCode)
{
int nCurPos = 0;
TEC_DATA_INFO *pCurr;
*pdwErrCode = 0;
pCurr = (TEC_DATA_INFO*)calloc(1, sizeof(TEC_DATA_INFO));
pCurr = strutecList.pData;
if (*pnPos < 0) // node data
{
while (pCurr)
{
nCurPos++;
if (pCurr -> nVal == pData -> nVal)
{
*pnPos = nCurPos;
break;
}
pCurr = pCurr -> pNext;
}
}
else
{
if ((*pnPos == 0) || (strutecList.nNum < *pnPos)) // Last node
*pnPos = strutecList.nNum;
while (pCurr)
{
nCurPos++;
if (nCurPos == *pnPos)
{
memcpy(pData, pCurr, sizeof(TEC_DATA_INFO));
break;
}
pCurr = pCurr -> pNext;
}
}
return TRUE;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -