1.反转整个链表
问题描述:给定一个单链表的头结点pHead(该头节点是有值的它的val是1),长度为n,反转该链表后,返回新链表的表头。
思路分析:拿到题目看到方法的参数为单链表的头节点,如果头节点为null或者头节点的下一个节点为空则不用反转直接返回头节点即可;如果这两者都不为空那么需要从第二个节点开始依次使用头插法对链表进行修改,由于每次在链表头插入元素的时候需要改变该元素的下一个节点指向头节点这样就会导致后面的节点丢失,所有在插入前,需要定义一个新节点用于保存下一个节点。(注意:反转链表时,原来链表的头节点一定会变成新节点的最后一个节点,所以需要把原来头节点的下一个节点置为null否则在修改时出现环,程序陷入死循环。)
代码:
public class Solution {
public ListNode ReverseList(ListNode head) {
if(head == null || head.next == null){
return head;
}
ListNode cur = head.next;
head.next = null;
//将原来头节点的下一个节点置为null否则出现死循环
while(cur != null){
ListNode curNext = cur.next;