9-&<&gtgt;=3+&<&gtgt;=o+&<&gtgt;=10-2怎么做

题目很明确给定一个链表,判斷其是否是回文链表回文回文,顾名思义即是顺着看和倒着看都是一样的,从这定义来看最简单的方法就是对原链表进行反转,看反转后的链表与原链表是否相同不过这样需要对整个链表进行反转,能否对其有所优化呢再从回文的定义来看,既然顺着看和倒着看嘟一样那么说明其是对称的,对于链表来说就是链表的中间结点左右都是相同的。考虑到这点就不难想出优化方法:只需遍历到中間结点,对链表中间结点前的部分进行反转然后再从中间结点向两边遍历,如果一样那么就说明链表两边是对称的,即是该链表是回攵链表了
因此这里首先是要找到中间结点,找中间结点最简单的方法是用一对快慢指针初始化指向第一个结点,慢指针步长为1快指針步长为2,如果链表长度为偶数中间结点是不存在的,那么当快指针遍历到末尾(NULL)时说明慢指针遍历到了第n/2+1个结点(n为链表长度);如果链表长度为奇数,那么当快指针指向的结点的下一个结点为NULL时说明慢指针遍历到了中间结点。

PreNode=CurNode; //反转结束后当前结点作为下一次的前一个结點

我要回帖

更多关于 oxr1gt 的文章

 

随机推荐