反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
迭代的做法:在遍历列表时,将当前节点 cur 的 next 指针改为指向前一个元素。由于节点没有引用其上一个节点 pre ,因此必须事先存储其前一个元素。在更改引用之前,还需要另一个指针来存储下一个节点 nextCur。不要忘记在最后返回新的头引用!
public class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
class Solution {
public ListNode reverseList(ListNode head) {
if (head == null) {
return head;
} else {
ListNode pre = null;
ListNode cur = head;
while (cur != null) {
ListNode nextCur = cur.next;
cur.next = pre;
pre = cur;
cur = nextCur;
}
return pre;
}
}
}
还有递归的方法,但是觉得如果迭代的方法已经很好了,那我就吸收这一种(对于我这种小白),看得多了,害怕搞混淆。
end.