数据结构——反转链表的算法实现

记录一下链表的操作

这是曾经一道面试题

链表的考察更侧重于代码的书写和思路的形成。虽然说,链表的结构简单,但是涉及到指针的操作,容易引申出一些挑战性的考题,其中也牵涉到诸多小的细节的考虑,更能看出代码书写的能力和功底。

 

废话不多说上图分析加代码

反转后:

Status ListReverse(LinkList &L)
{/*链表逆序*/
    if(L==NULL||L->next==NULL)
        return -1;

    LNode* pNext = L->next->next;
    LNode* pNode = L->next;
    LNode* pTemp = L->next->next->next;    // 指向所处理的节点的下一个节点
    LNode* pFirst = L->next;   // 记录原链表的第一个节点,即逆转后的尾节点

    // 每次处理两个节点
    while(pNode->next && pNext)
    {
        pNext->next = pNode;    // 迭代逆转的两个节点是 pnext pnode
        pNode = pNext;
        pNext = pTemp;

        if(pTemp!=NULL)
            pTemp = pTemp->next;
        else
            ;
    }
    L->next = pNode;    // 头节点指向新的第一个元素节点
    pFirst->next = NULL;  // 尾节点置为NULL
    return 1;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值