数据结构——链表逆置!

链表逆置:是将形如 1 →2 →3 →4 →5 →NULL 的链表逆置改为:5 →4 →3 →2 →1 →NULL
对于这个问题,有两种方法:

1、采用三个指针:将整个链表翻转!!
时间复杂度O(N^2) 嵌套循环

具体思路如下:首先要先找到新的头结点,则需要一个指针pCur1遍历链表,找到原尾结点,将其设置为新的头结点,因为我们需要从原头结点开始遍历,则需要一个pOldHead指针来保存原头结点,现在在找一个pCur2来保存新链表的最后一个结点,每次遍历前将pCur1更新指向pOldHead,当pCur1的next恰好等于pCur2结点时,将pCur1尾插至pCur2,再更新pCur2pCur1,最后当pOldHead等于pCur2时,逆置完毕,再将pCur2的next赋空即可!
这里写图片描述

代码如下:

void ReverseSList(PNode* pHead)
{
    assert(*pHead);                                         //参数检测

PNode pOldHead = *pHead;
PNode pCur2;
PNode pCur1;

if (NULL == *pHead
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值