反转链表

来源:互联网 发布:rsyslog windows 编辑:程序博客网 时间:2024/06/09 02:21

输入一个链表,反转链表后,输出链表的所有元素。

本文考虑的是单链表

定义单链表

public class ListNode {
    int val;    //自身值
    ListNode next = null;      //指向下一个节点
    ListNode(int val) {
        this.val = val;
    }
}


实现类:

public class Solution {
    public ListNode ReverseList(ListNode head) {
         if(head == null){
                return null;
         }
         //head为当前节点,pre为当前节点的前一个节点,dre为当前节点的后一个节点
         ListNode cur = head;
         ListNode pre = null;
         ListNode dre = null;
         while(cur != null){
            dre = cur.next;
            cur.next = pre;
            pre = cur;
            cur = dre;
        }
        return pre;
    }
    
    public static void main(String[] args) {
         //构建单链表
         ListNode node1 = new ListNode(1); //val=1,next=null
         ListNode node2 = new ListNode(2); //val=2,next=null
         ListNode node3 = new ListNode(3); //val=3,next=null
         ListNode node4 = new ListNode(4); //val=4,next=null
         ListNode node5 = new ListNode(5); //val=5,next=null
         node1.next = node2; //val=1,next=val=2,next=null
         node2.next = node3;
         node3.next = node4;
         node4.next = node5;
         node5.next = null;
         Solution s = new Solution();
         ListNode node = s.ReverseList(node1);
         while(node != null){
              System.out.print(node.val + " ");
              node = node.next;
         }
   }
}

1 0