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

    一、简介

      经查阅,主要有两种方法实现链表反转,递归反转法和遍历反转法;

      递归: 在反转当前结点之前先反转其后边的结点,即、从尾结点开始逆向反转各个节点的指针域指向;

      遍历:从前往后反转各个结点的指针域的指向。

    二、实现

    定义一个结点类:

    public class Node {

     private int data;  //数据域
     private Node next;    //指针域
      
     
     public Node(int data) {
      super();
      this.data = data;
     }
     public int getData() {
      return data;
     }
     public void setData(int data) {
      this.data = data;
     }
     public Node getNext() {
      return next;
     }
     public void setNext(Node next) {
      this.next = next;
     }
     
    }

    递归反转:

    public static Node reverse(Node head){
      

    //如果是空链表或者尾结点
      if (head==null||head.getNext()==null) {
       return head;
      }

    //先反转后续结点
      Node reversedHead=reverse(head.getNext());

    //当前结点指针指向前一结点
      head.getNext().setNext(head);

    //令前一结点的指针域为null
      head.setNext(null);
      return reversedHead;
     }

    遍历反转:

    public static Node reverse1(Node head){
      
      if (head==null) {
       return head;
      }

    //上一结点
      Node pre=head;

    //当前结点
      Node cur=head.getNext();

    //用于存储下一节点
      Node tem;

    //cur==null 即尾结点
      while(cur!=null){

    //下一节点存入临时结点
       tem=cur.getNext();

    //将当前结点指针指向上一节点
       cur.setNext(pre);

    //移动指针
       pre=cur;
       cur=tem;
      }
      head.setNext(null);
      return pre;
     }

  • 相关阅读:
    三范式
    SVN
    docker镜像文件的导入与导出(docker镜像迁移)
    OpenStack镜像服务基本操作
    keystone认证服务
    OpenStack存储(单节点)
    OpenStack单节点制作镜像
    清除OpenStack网络与路由
    制作OpenStack云平台centos6.5镜像
    OpenStack单节点网络设置
  • 原文地址:https://www.cnblogs.com/iamkk/p/5971252.html
Copyright © 2011-2022 走看看