链表反转:有无头节点其实方法都一样,需要两个指针一个指针指向当前节点的前一个节点
用于反向
另外一个指针用于指向当前节点,然后依次向后遍历,需要注意的是当前指针的next节点会指向前一个节点
破坏原有的关系,因此需要一个临时的指针来保存next节点的值
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
ListNode prev = null;
ListNode curr = head;
while(curr != null){
ListNode nexttemp = curr.next;
curr.next = prev;
prev = curr;
curr = nexttemp;
}
return prev;
}
}