zoukankan      html  css  js  c++  java
  • Java反转单链表

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. class Node {  
    2.     private int data;  
    3.     private Node nextNode;  
    4.   
    5.     public Node(int data) {  
    6.         this.data = data;  
    7.     }  
    8.     public int getData() {  
    9.         return data;  
    10.     }  
    11.     public void setData(int data) {  
    12.         this.data = data;  
    13.     }  
    14.     public Node getNextNode() {  
    15.         return nextNode;  
    16.     }  
    17.     public void setNextNode(Node nextNode) {  
    18.         this.nextNode = nextNode;  
    19.     }  
    20. }  
    21.   
    22. public class ReverseSingleList {  
    23.       
    24.     public static Node reverse(Node head) {  
    25.         if (null == head || null == head.getNextNode()) {  
    26.             return head;  
    27.         }  
    28.           
    29.         Node reversedHead = reverse(head.getNextNode());  
    30.         head.getNextNode().setNextNode(head);  
    31.         head.setNextNode(null);  
    32.           
    33.         return reversedHead;  
    34.     }  
    35.       
    36.     public static Node reverse2(Node head) {  
    37.         if (null == head || null == head.getNextNode()) {  
    38.             return head;  
    39.         }  
    40.           
    41.         Node node1 = head;  
    42.         Node node2 = head.getNextNode();  
    43.         head.setNextNode(null);  
    44.         while (null != node2) {  
    45.             node1 = node2;  
    46.             node2 = node2.getNextNode();  
    47.             node1.setNextNode(head);  
    48.             head = node1;  
    49.         }  
    50.           
    51.         return head;  
    52.     }  
    53.   
    54.     public static void main(String[] args) {  
    55.         Node head = new Node(0);  
    56.         Node cur = head;  
    57.         Node tmp = null;  
    58.           
    59.         // 构造一个长度为10的链表,保存头节点对象head     
    60.         for (int i = 1; i < 10; i++) {  
    61.             tmp = new Node(i);  
    62.             cur.setNextNode(tmp);  
    63.             cur = tmp;  
    64.         }  
    65.           
    66.         //打印反转前的链表  
    67.         Node h = head;  
    68.         while (null != h) {  
    69.             System.out.print(h.getData() + " ");  
    70.             h = h.getNextNode();  
    71.         }  
    72.           
    73.         //调用反转方法  
    74.         //head = reverse(head);  
    75.         head = reverse2(head);  
    76.         System.out.println(" **************************");  
    77.           
    78.         //打印反转后的结果  
    79.         while (null != head) {  
    80.             System.out.print(head.getData() + " ");  
    81.             head = head.getNextNode();  
    82.         }  
    83.     }  
    84. }  
     
    运行结果:

    0 1 2 3 4 5 6 7 8 9

    **************************

    9 8 7 6 5 4 3 2 1 0

  • 相关阅读:
    关于oracle数据库(10)函数
    关于oracle数据库(9)
    关于oracle数据库(8)查询2
    关于oracle数据库(7)查询1
    关于oracle数据库(6)约束
    关于oracle数据库(5)增删改查
    关于oracle数据库(4)数据类型
    爬虫之beautifulsoup
    影视项目报错情况及处理
    多app应用等系列汇总
  • 原文地址:https://www.cnblogs.com/grimm/p/6732540.html
Copyright © 2011-2022 走看看