一个简单的自定义的链表,将其进行从tail到header反转一下

import java.util.ArrayList;

public class ReverseListNode {

   static class ListNode {

        int val;
        ListNode next = null;

        ListNode(int val) {
            this.val = val;
        }
    }

    public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        ArrayList<Integer> intList = new ArrayList<>();
        ArrayList<Integer> intList2 = new ArrayList<>();
        ListNode node = listNode;
        while(node != null){
            intList.add(node.val);
            node = node.next;
        }
        int size = intList.size();
        for(int i=size-1; i>=0; i--){
            intList2.add(intList.get(i));
        }
        return intList2;
    }

    public static ListNode printListFromTailToHead2(ListNode listNode) {
       ListNode newNode = null;
       ArrayList<ListNode> nodeList = new ArrayList<>();
        ListNode next = listNode.next;
        listNode.next = null;
        nodeList.add(listNode);
        while(next!=null){
            nodeList.add(next);
            next=next.next;
        }
        int size = nodeList.size();
        int index = size -1;
        while(index>=1) {
            nodeList.get(index).next = nodeList.get(index-1);
            index --;
        }
        newNode = nodeList.get(size-1);
       return newNode;
    }

    public static ListNode printListFromTailToHead3(ListNode listNode) {
       ListNode newNode = null;
       ArrayList<ListNode> nodeList = new ArrayList<>();
        ListNode next = listNode.next;
        listNode.next = null;
        nodeList.add(listNode);
        int index = 1;
        ListNode current;
        while(next!=null){
            nodeList.add(next);
            next=next.next;
            nodeList.get(index).next=nodeList.get(index-1);
            index++;
        }
        int size = nodeList.size();
        newNode = nodeList.get(size-1);
       return newNode;
    }


    public static void main(String[] args) {
        ListNode node = new ListNode(20);
        ListNode node1 = new ListNode(30);
        ListNode node2 = new ListNode(40);
        ListNode node3 = new ListNode(50);
        node.next=node1; node1.next=node2; node2.next=node3;
        System.out.println(node);
        ArrayList<Integer> list = printListFromTailToHead(node);
        System.out.println(list);
        ListNode listNode = printListFromTailToHead3(node);
        System.out.println(listNode.next);
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值