反转链表
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=295&sfm=html&channel=nowcoder
题?的主要信息:
- 给定一个长度为n的链表,反转该链表,输出表头
迭代(推荐使用)能用迭代尽量用迭代。
具体做法:
1.优先处理空链表,空链表不需要反转。
2.我们可以设置两个指针,一个当前结点的指针,一个上一个结点的指针(初始为空)。
3.遍历整个链表,每到一个结点,断开当前结点与后面结点的指针,并用临时遍历记录后一个结点,然后当前结点指向上一个结点。
4.再轮换当前指针与上一个指针,让它们进入下一个结点及下一个结点的前序结点。
答案:
public class Solution {
public ListNode ReverseList(ListNode head) {
if (head == null){
return null;
}
ListNode cur = head;
ListNode pre = null;
while(cur != null){
ListNode temp = cur.next;
cur.next = pre;
pre = cur;
cur = temp;
}
return pre;
}
}