LeetCode Hot 热题100 算法题 206.反转链表-算法&测试-easy模式
程序员文章站
2024-03-22 14:18:10
...
LeetCode Hot 热题100 算法题 206.反转链表-算法&测试-easy模式
反转一个单链表。
示例:1->2->3->4->5
输出:5->4->3->2->1
package leetcode.easy;
public class Solution206 {
public static void main(String[] args) {
ListNode head = new ListNode(0);//头节点不能动
ListNode cur = head;
for (int i = 1; i < 6; i++) {
cur.next=new ListNode(i);
cur=cur.next;
}
S206ReverseLinkedList testReverseLinkedList = new S206ReverseLinkedList();
ListNode reverseList = testReverseLinkedList.reverseLinkedList(head.next);//从头节点的下一节点开始
while(reverseList!=null) {
System.out.println(reverseList.val);
reverseList=reverseList.next;
}
}
}
class S206ReverseLinkedList{
public ListNode reverseLinkedList(ListNode list) {//从链表的第一个节点开始
ListNode cur = list;
ListNode next = null;
ListNode rvsList = null;//反向链表的第一个节点
while(cur!=null) {
next=cur.next;//next保存 原链表当前节点的下一节点
cur.next=rvsList;//将原链表当前节点加到反向链表的头部
rvsList=cur;//将反向链表的指针后移
cur=next;//后移原链表的指针
}
return rvsList;
}
public ListNode reverseLinkedList2(ListNode head) {
ListNode cur = head;
ListNode next = null;
ListNode rvsHead = new ListNode(-1);//反向链表有头节点
while(cur!=null) {
next=cur.next;//保存 当前节点的下一节点
cur.next=rvsHead.next;//将新节点的next指向反向链表头节点的下一节点
rvsHead.next=cur;//将反向链表头节点的下一节点指向新节点
cur=next;//后移原链表的指针
}
return rvsHead;
}
}
参考:
https://leetcode-cn.com/problems/reverse-linked-list
上一篇: 169 - 多数元素 - python