反转链表(java)

大家好我是苏麟今天说一说链表常见的简单题目 .

BM1 反转链表

牛客BM1 反转链表 :

描述 : 

给定一个单链表的头结点(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。

反转链表(java)_第1张图片

反转链表(java)_第2张图片

 分析 : 

用头插:

方法一 : (不保留原链表,用头插) 

方法二 : (保留原链表,用头插) 

方法三 : 用栈

import java.util.*;
 
/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */
 
public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param head ListNode类
     * @return ListNode类
     */
    public ListNode ReverseList (ListNode head) {
        // write code here
        ListNode node = null;
        ListNode p = head;
        ListNode temp = null;
        while(p != null){
            temp = p.next;
            p.next = node;
            node = p;
            p = temp;
        }
        return node;
    }
}

这期就到这里,下期见!

你可能感兴趣的:(算法村,算法)