zoukankan      html  css  js  c++  java
  • 2-从尾到头打印链表

      题目:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

    • 核心代码如下
     1  public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
     2         ArrayList<Integer> list = new ArrayList<Integer>();
     3         ArrayList<Integer> result = new ArrayList<Integer>();
     4         if(listNode == null){ //如果没有节点,无需反转,直接返回空的ArrayList集合即可
     5             return result;
     6         }
     7         if(listNode.next == null){ //如果链表中只有一个节点,无需反转,返回这个节点对应的ArrayList即可
     8            result.add(listNode.val);
     9             return result;
    10         }
    11         
    12         //定义一个辅助指针,遍历链表
    13         ListNode temp = listNode; 
    14         while(temp != null){
    15             list.add(temp.val);
    16             temp = temp.next;
    17         }
    18         for(int i=list.size()-1; i>=0;i--){
    19             result.add(list.get(i));
    20         }
    21         return result;
    22     }
    • 完整代码+测试截图
     1 import java.util.ArrayList;
     2 
     3 public class Demo1 {
     4     public static void main(String[] args) {
     5         // 先创建多个节点,供测试使用
     6         ListNode listNode1 = new ListNode(1);
     7         ListNode listNode2 = new ListNode(2);
     8         ListNode listNode3 = new ListNode(3);
     9         ListNode listNode4 = new ListNode(4);
    10         ListNode listNode5 = new ListNode(5);
    11         // 把各个节点链起来
    12         listNode1.next = listNode2;
    13         listNode2.next = listNode3;
    14         listNode3.next = listNode4;
    15         listNode4.next = listNode5;
    16         listNode5.next = null;
    17         
    18          System.out.print("原始链表中的数据:");
    19          printList(listNode1);
    20          
    21          System.out.print("
    结果数据:");
    22         //把链表的值逆序放到一个Arraylist集合中
    23          ArrayList<Integer> printListFromTailToHead = printListFromTailToHead(listNode1);
    24          System.out.print(printListFromTailToHead.toString());
    25     }
    26 
    27 
    28     /**
    29      * 遍历单链表
    30      * @param listNode
    31      */
    32     public static void printList(ListNode listNode) {
    33         ListNode tempNode = listNode;
    34         while(tempNode != null){
    35             System.out.printf("%d	",tempNode.val);
    36             tempNode = tempNode.next;
    37         }
    38     }
    39 
    40 
    41     /**
    42      * 把单链表中的值存储到一个ArrayList集合中,并返回这个集合
    43      * @param listNode
    44      * @return
    45      */
    46 
    47     public static ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
    48         ArrayList<Integer> list = new ArrayList<Integer>();
    49         ArrayList<Integer> result = new ArrayList<Integer>();
    50         if (listNode == null) { // 如果没有节点,无需反转,直接返回null即可
    51             return result;
    52         }
    53         if (listNode.next == null) { // 如果链表中只有一个节点,无需反转,返回这个节点对应的ArrayList即可
    54             list.add(listNode.val);
    55             return list;
    56         }
    57         // 定义一个辅助指针,遍历链表
    58         ListNode temp = listNode;
    59         while (temp != null) {
    60             //每遍历到一个节点,就把这个节点的数据存放到list集合中
    61             list.add(temp.val);
    62             temp = temp.next;
    63         }
    64         //把list集合中的数据,逆序存放到result集合中
    65         for (int i = list.size() - 1; i >= 0; i--) {
    66             result.add(list.get(i));
    67         }
    68         return result;
    69     }
    70 }
    71 // 节点类(就是链表中一个一个的节点对象)
    72 class ListNode {
    73     int val;
    74     ListNode next = null;
    75 
    76     public ListNode(int val) {
    77         this.val = val;
    78     }
    79 }
    • 运行结果

      

  • 相关阅读:
    NPOI Word 多级标题结构设置
    ^M的问题解决
    sed命令详解
    Python time datetime string 相互转换
    Linux环境下调试python代码----pdb模块
    k8s更新证书记录
    sealos + NFS 部署 kubesphere 3.0
    使用wireshark排除一例网络问题
    Prometheus监控Oracle数据库
    记录一次清理挖矿病毒
  • 原文地址:https://www.cnblogs.com/sun-/p/12680556.html
Copyright © 2011-2022 走看看