输入:A->B->C->D->E->NULL 输出:E->D->C->B->A->NULL
第一种使用while循环遍历直到最后一个节点
先贴出代码实现:
总结的思路:1 用一个对象(temp)保存下一个节点,以免丢失这个对象。
2.把当前对象的下一个指向一个新的对象(pre)
3.新的这个对象(pre) 赋值为当前的对象
4.把当前对象赋值为下一个对象,也是的步骤1保存的对象 。
5.循环以上步骤
详细的解析:
首先创建一个空的对象pre 。ListNode pre = null;
创建一个对象并赋值为要反转对象。ListNode cur = head;
创建一个while循环,条件是cur 不为空
第一次循环:
1.创建一个临时对象保存当前对象A(A->B->C->D->E)的下一个指向:ListNode nextTemp = cur.next 这么做的目的是接下来要改变当前对象的下一个指向,以免丢失。此时nextTemp = B(B->C->D->E)
2.将当前对象A(A->B->C->D->E)的下一个节点指向pre 。cur.next = pre ,执行此步骤后变成A->pre(null)。
3.将pre这个对象赋值为当前的对象pre = cur;执行此步骤后变成A->pre(A)。
4.将当前的对象变成之前的下一个节点nextTemp 。cur = nextTemp 执行此步骤后变成
pre变成A对象,cur变成B(B->C->D->E)。
第二次循环:
1.创建一个临时变量保存当前对象B(B->C->D->E)的下一个指向:ListNode nextTemp = cur.next。
这个时候nextTemp = C(C->D->E)
2.将当前对象B(B->C->D->E)的下一个节点指向pre(A)这个对象,变成了B-A;
3.将pre这个对象赋值为当前对象cur(B),变成pre(B->A)
4.将当前对象变成之前的下一个节点nextTemp 。
执行此步骤后变成cur变成C(C->D->E),pre变成B(B->A)对象
以此循环知道cur为null 退出循环
最后返回pre这个对象。pre = E(E->D->C->B->A)
网友评论