自己写的一些双向链表操作

 

typedef struct SingList
{
    int nData;
    struct SingList *pNext;
}SingnNode,*pSingnNode;

typedef struct LoopList
{
    int nData;
    struct LoopList *pLeft,*pRight;
}LoopNode,*pLoopNode;

 

void CLoopList::InestMyList(pLoopNode pHead,int nData,int nNum)
{
    pLoopNode pTemp,pNewNode;

    if ((pTemp = SerachMyList(pHead,nData)) == NULL)
    {
        strErrMsg.Format(_T("Can find the node :[%d]!"),nNum);
        return;
    }
   
    if ((pNewNode = new LoopNode) == NULL)
    {
        strErrMsg.Format(_T("Can not new memory!"));
        return;
    }

    pNewNode->pLeft         = pTemp->pLeft;
    pNewNode->pRight     = pTemp;
    pTemp->pLeft->pRight = pNewNode;
    pTemp->pLeft         = pNewNode;

}
void CLoopList::DelMyList(pLoopNode pHead,int nData)
{
    pLoopNode pTemp;

    if ((pTemp = SerachMyList(pHead,nData)) == NULL)
    {
        strErrMsg.Format(_T("Can find the node :[%d]!"),nData);
        return;
    }

    pTemp->pRight->pLeft = pTemp->pLeft;
    pTemp->pLeft->pRight = pTemp->pRight;

    delete pTemp;
}
void CLoopList::PrintMyList(pLoopNode pHead)
{
    int nOutData;
    pLoopNode pTemp;
    pTemp = pHead->pRight;

    if (pTemp == pHead)
    {
        strErrMsg.Format(_T("That ia a empty LoopNode!"));
        return;
    }

    while(pTemp != pHead)
    {
        nOutData = pTemp->nData;
        pTemp     = pTemp->pRight;
    }
}
pLoopNode    CLoopList::SerachMyList(pLoopNode pHead,int nData)
{
    pLoopNode pTemp;
    pTemp = pHead->pRight;

    while(pTemp != pHead)
    {
        if (nData == pTemp->nData)
        {
            return pTemp;
        }
        else
        {
            pTemp = pTemp->pRight;;
        }
    }
    return NULL;
}
pLoopNode    CLoopList::CreateMyList(int nNum)
{
    pLoopNode pHead,pTemp,pNewNode;
    if ((pHead = new LoopNode) == NULL)
    {
        strErrMsg.Format(_T("Can not new memory!"));
        return NULL;
    }
    pHead->nData = 0;
    pHead->pLeft = NULL;
    pHead->pRight= NULL;
    pTemp = pHead;

    for (int i = 0; i < nNum; i++)
    {
        if ((pNewNode = new LoopNode) == NULL)
        {
            strErrMsg.Format(_T("Can not new memory!"));
            return NULL;
        }
        pNewNode->nData = i + 1;

        pNewNode->pLeft        = pTemp;
        pNewNode->pRight    = NULL;
        pTemp                = pNewNode;
    }
   
    pTemp->pRight    = pHead;
    pHead->pLeft    = pNewNode;

    return pHead;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值