首页 > 编程 > Java > 正文

Java实现单链表翻转实例代码

2019-11-26 12:45:49
字体:
来源:转载
供稿:网友

Java实现单链表反转,递归和非递归两种形式

/** * 反转单链表 *//** * 定义链表 *  * @author 16026 * */class Node {  int val;  Node next;  public Node(int val) {    this.val = val;  }}public class ReverseList {  /**   * 反转链表   *    * @param head   * @return   */  public static Node reverseList(Node head) {    if (head == null || head.next == null) {      return head;    }    Node reHead = null;// 定义新链表头结点    while (head != null) {      Node cur = head.next;// 记录下一个节点      head.next = reHead;// 将rehead节点连接到head节点上      reHead = head;// 让rehead指向head      head = cur;// 将head指向下一个节点    }    return reHead;  }  /**   * 递归反转链表   *    * @param head   * @return   */  public static Node reverseList2(Node head) {    if (head == null || head.next == null)      return head;    Node rehead = reverseList2(head.next);    head.next.next = head;// 将头节点置于末端    head.next = null;// 防止链表循环    return rehead;  }  /**   * 打印链表   *    * @param head   */  public static void printList(Node head) {    if (head == null)      return;    while (head != null) {      System.out.print(head.val + " ");      head = head.next;    }  }  /**   * 测试   *    * @param args   */  public static void main(String[] args) {    Node n1 = new Node(1);    Node n2 = new Node(2);    Node n3 = new Node(3);    Node n4 = new Node(4);    Node n5 = new Node(5);    n1.next = n2;    n2.next = n3;    n3.next = n4;    n4.next = n5;    // Node rehead = reverseList(n1);    Node rehead = reverseList2(n1);    printList(rehead);  }}

运行结果如下:

以上所述是小编给大家介绍的Java实现单链表翻转实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表