一:问题描述
反转链表
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
二:问题分析
迭代法
假设存在链表 1 → 2 → 3 → Ø,我们想要把它改成 Ø ← 1 ← 2 ← 3。
在遍历列表时,将当前节点的 next 指针改为指向前一个元素。由于节点没有引用其上一个节点,因此必须事先存储其前一个元素。在更改引用之前,还需要另一个指针来存储下一个节点。不要忘记在最后返回新的头引用!
三:问题求解
public class ReverseLinkedList {
public ListNode reverseList(ListNode head) {
ListNode cur=head;
ListNode prev=null;
while(cur!=null){
ListNode temp=cur.next;
cur.next=prev;
prev=cur;
cur=temp;
}
return prev;
}
}
class ListNode{
int val;
ListNode next;
ListNode(int x){val=x;}
}