此博客链接:
反转链表
题目链接:https://leetcode-cn.com/problems/reverse-linked-list/
题目
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2]
输出:[2,1]
示例 3:
输入:head = []
输出:[]
题解
反转链表,我都是利用头插法来反转链表的。先遍历链表,创建一个新的链表,使用头插法把节点插入新的链表中,整个链表都会被反转。如下图所示,每次插入把节点都插入到新链表的头部,这样就可以达到反转链表的效果。
代码
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode reverseList(ListNode head) { ListNode newhead=new ListNode(-1); ListNode p=head; while(p!=null){ ListNode r=newhead.next; newhead.next=p; p=p.next; newhead.next.next=r; } return newhead.next; } }