• 单链表的反转(开辟新的空间和不开辟额外的空间)


    利用新链表:

    思路:

             1.定义一个新的链表;

             2.从头到尾遍历原来的链表,每遍历一个节点,将其取出,并且将其放在新的链表的最前端,也就是第一个有效结点;

             3.将原来的链表的head.next = 新的链表的head.next。

     主要代码:

    public  void reverSetList(){
          //如果链表为空或者链表只有一个元素,无需反转
          if(this.head.next == null || this.head.next.next == null){
              return;
          }
          //定义一个辅助变量,遍历原来的链表
          Node index = this.head.next;
          Node cur = null;  //指向当前节点[index]的下一个节点
          Node reverHead = new Node<E>((E)new Object(),null); //定义一个新的节点
          //遍历原来的链表
          while (index != null){
              cur = index.next;//暂时保存当前节点的下一个节点
              index.next = reverHead.next;  //将index的下一个节点指向新链表的最前端
              reverHead.next = index;
              index = cur; //index后移
          }
          this.head.next = reverHead.next;   //原来链表指向新的节点的最前端
      }

    利用原链表:

    定义三个指针(一个标记每次逆序的链表的头,一个作为基准,另一个作为下次要逆序的值)

    假如要逆序的链表如下图:

     其主要过程:

          分析上图:经过第一步将数据1与数据2之间的联系断开,与数据三建立联系,第二步将数据2与数据3之间的联系断开,与数据1建立联系,并且将头结点指向p1,也就是更新head。重复上面操作,直到p1指向null。

    具体代码如下:

    /**
         * 逆置单链表
         * @param node  链表头结点
         */
        public static Node inversion(Node node){
            if(node == null){   //此处应该加入判断只有一个节点的情况,也不需要反转
                System.out.println("Linked is empty");
            }
            Node head = node;  //头指针
            Node p = node;  //固定指针
            Node p1 = node.next;   //后指针
            while (p1 != null){
                p.next = p1.next;
                p1.next = head;
                head = p1;
                p1 = p.next;
            }
            return head;
        }
  • 相关阅读:
    java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
    项目开发中关于权限的实现方案简单描述(帮助以后回忆)
    一些比较有用的模板
    递归之遍历部门
    关于s2sh框架关于hibernate懒加载问题的说明和解决方案
    Hibernate实体映射配置(XML)简单三步完美配置
    项目添加性能监控日志
    redis常用命令大全
    redis主从同步
    redis之哨兵部署运行日志解读
  • 原文地址:https://www.cnblogs.com/128-cdy/p/12197869.html
Copyright © 2020-2023  润新知