说明:本文仅供学习交流。转载请标明出处。欢迎转载!

题目:存在一个单链表,头指针为head,实现单链表的反转Node *Reverse(Node *head)。 

         该算法的求解办法有非常多,如:

          方法1:先顺序变量单链表,将结点保存到栈中,在从栈中弹出结点,又一次建立一个新的单链表;

          方法2:用《剑指offer》里面给出的算法,用三个指针来实现;

          方法3:採用递归实现,是方法2的递归实现形式。

          本文主要给出方法2和方法3。在给出详细的代码之前,先要注意几个问题

         (1)假设head为空,该怎样处理?

         (2)假设链表为单节点链表,该怎样处理?

         (3)怎样防止在反转过程中断链?

         (4)反转后head是否更新?

         (5)反转后得到的链表最后一个结点是否为null?

            考虑完以上问题后,就能够写出正确的代码了。

             代码实现例如以下:


             測试结果例如以下:

算法题:反转单链表

  參考资料-------------《剑指offer》

相关文章:

  • 2021-07-19
  • 2021-08-15
  • 2021-07-08
  • 2021-07-20
  • 2020-12-23
  • 2021-03-14
猜你喜欢
  • 2021-05-15
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-25
  • 2022-01-28
  • 2022-12-23
相关资源
相似解决方案