面试题: 用代码实现单链表反转 然后打印出链表节点的ID
该算法的求解办法有非常多,如:
方法1:先顺序变量单链表,将结点保存到栈中,在从栈中弹出结点,又一次建立一个新的单链表;
方法2:用《剑指offer》里面给出的算法,用三个指针来实现;
方法3:採用递归实现,是方法2的递归实现形式。
本文主要给出方法2和方法3。在给出详细的代码之前,先要注意几个问题:
(1)假设head为空,该怎样处理?
(2)假设链表为单节点链表,该怎样处理?
(3)怎样防止在反转过程中断链?
(4)反转后head是否更新?
(5)反转后得到的链表最后一个结点是否为null?
考虑完以上问题后,就能够写出正确的代码了。
实现自定义链表反转类
package com.pne.jnitest;
import android.util.Log;
public class CustomLinkedList {
static class Node{
int data