C++解OJ题----反转链表(这次没有递归只有迭代)

  2021年的最后个把月,收拾心情,整装待发,请让我越来越忙碌吧!
  解了一道OJ题,一起来看看。


原题如下:

在这里插入图片描述
  给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。


审题:
  题目描述还是挺简单的,就是给你一个单链表让它的头变尾,尾变头后,返回新的头。

可能给我们的单链表情况:
1.空单链表;
 2.只有一个结点的单链表;
 3.有多个结点的单链表。
  对于前两种情况,我们都还是很好进行处理的,只需要返回原来的头即可。现在一起来看看如何处理第三种情况。


一.点不变箭头变

  假设有如下的单链表:
在这里插入图片描述
  如何让这个单链表头变尾,尾变头?第一种实现方式,我们可以让它们的箭头反过来指,如下:
在这里插入图片描述
算法思路:
  让原来后继结点的next域包含前驱结点的地址(第一个结点的next域赋值为NULL),就可以将箭头的指向改变。

代码设计:
  需要三个指针,分别是新的头指针newHead(初始化为NULL),指向当前结点的指针cur(即指向需要改变next域结点的指针,初始化为第一个结点)和指向当前结点的下一个结点的指针curNext,如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值