关于链表的一些操作(持续更新中)

虽然以前写过几篇关于链表的博客,但是感觉以前代码太乱,不严谨,而且太分散,所以重开一帖,贴上一些关于链表的操作,以后遇到相关问题就不断补充。

struct ListNode
{
    int m_nValue;
    ListNode *m_pNext;
};

void BuildList(ListNode *&Head, int Val)          //构建链表
{
        if(Head == NULL)
        {
            Head = new ListNode();
            Head->m_nValue = Val;
            Head->m_pNext = NULL;
        }
        else
        {
            ListNode *Node = Head;
            while(Node->m_pNext != NULL)
            {
                Node = Node->m_pNext;
            }
            ListNode *p = new ListNode();
            p->m_nValue = Val;
            p->m_pNext = NULL;
            Node->m_pNext = p;
        }
}

void RemoveNode(ListNode *&Head, int n)        //删除链表中存储n的节点
{
    if(Head == NULL)
        return ;
    ListNode *Node = Head;
    ListNode *PreNode;
    bool flag = false;
    if(Node->m_nValue == n)
    {
        Head = Head->m_pNext;
        delete(Node);
        Node = NULL;
        return ;
    }
    while(Node != NULL)
    {
        if(Node->m_nValue == n)
        {
            flag = true;
            break;
        }
        PreNode = Node;
        Node = Node->m_pNext;
    }
    if(flag == false)
        return ;
    PreNode->m_pNext = Node->m_pNext;
    delete(Node);
    Node = NULL;
}

void ReverseList(ListNode *Node)           //从尾到头打印链表
{
    if(Node == NULL)
        return ;
    ReverseList(Node->m_pNext);
    cout << Node->m_nValue << endl;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值