这是leetcode上一道简单题,关于反转链表的,用的java去实现。算法很清晰,简单写一下。
- 如果是空链表,返回null;
- 否则,先保留初始头结点,依次将下一个结点的next指针指向head,再将head和tmp往后挪一个结点;值得注意的是这里的tmp2,保存的是tmp后的结点,即tmp往后挪的那个结点。
- 还是非常好理解的,不行的话对照画个图模拟一下就可以了。
具体代码如下:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public ListNode reverseList(ListNode head) {
if (head == null) {
return null;
}
ListNode oldHead = head;
ListNode tmp = head.next;
while (tmp != null) {
ListNode tmp2 = tmp.next;
tmp.next = head;
head = tmp;
tmp = tmp2;
}
oldHead.next = null
return head;
}