牛客OR36.链表的回文结构

题目描述及链接

链表的回文结构
链表的回文结构

解题思路

把链表分成两段,并且后半段逆置。
再用curA和curB同时遍历这两段链表,
若出现不相等的结点则不是回文链表;
若是回文结构,则通过画图分析可知,
当有奇数个结点时,curA和curB会同时到达NULL;
当有偶数个结点时(必须取靠右的作为mid),curB到达NULL时就是回文结构。

图示

奇数个结点
偶数个结点

完整代码

关于逆置链表和找中间节点的函数,请复习前面的文章。
代码

总结

本题的难点在于想到把链表从中间分成两段并同时遍历比较。
具体写代码的过程再完善对于奇数个结点、偶数个结点怎么分段。

但是,从单链表不能访问前一个元素的性质来看,逆置后半段遍历是唯一的选择。

总之要先熟练求中间节点、逆置链表的写法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值