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;
     }

  • 相关阅读:
    JQuery的学习笔记
    Ajax的学习笔记
    软件项目的托管平台gitHub
    滚动事件:document.body.scrollTop总是0的原因
    Less/Sass编译工具,koala使用指南
    CSS中的浮动和清除浮动,梳理一下
    PHP_GET数据获取
    php中header()
    服务端web开发:PHP简介以及常见语法
    C/S架构和B/S架构
  • 原文地址:https://www.cnblogs.com/iamkk/p/5971252.html
Copyright © 2011-2022 走看看