反转链表是很常见的操作。考研时候由于初接触数据结构,对链表理解还不是很顺,现在看来,很好理解了。
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
//由于每次要反转的链表前后都是空的,所以需要额外两个指针来记录当前链表反转时的前后指针。
ListNode pre = null; //pre用于存放反转后的next
ListNode next = null; //next用于记录当前的下一个,即下一次反转的节点
//每次取一个
while(head != null) {
next = head.next;
head.next= pre;
//取新的一个元素
pre = head;
head = next;
}
return pre;
}
}