zoukankan      html  css  js  c++  java
  • 实现带头结点的单向链表反转

    一、问题描述

    将一个带有头结点的单向列表反转,如将 head -> node1 -> node2 -> node3 转换成 head -> node3 -> node2 -> node1。

    二、解决思路

    1. 定义一个新的头结点;
    2. 遍历原链表的结点,每遍历到一个结点便将该结点取出添加到新链表的第一个位置;
    3. 原链表遍历完成之后将原链表的头部指向新链表头部所指向位置,反转完成。
    • 初始如下:

    • 定义两个变量,一个变量 cur 保存当前节点,一个变量 next 保存当前节点的下一节点位置。

    • 将当前节点的下一个节点指向新链表头部所指向节点,新链表头部所指向当前节点,当前节点后移。

    三、实现代码

    public static void reverseNode(Node head){
            if (head.next == null || head.next.next == null){
                return;
            }
            Node cur = head.next;//保存原链表的下一个位置
            Node next = null;//当前节点的下一节点
            Node reverseNode = new Node("");//重新声明一个头部
            while (cur != null){
                next = cur.next;//暂时保存当前节点的下一个节点
                cur.next = reverseNode.next;//cur的下一个节点指向新的链表的最前端
                reverseNode.next = cur;//将cur连接到新的链表上
                cur = next;//cur后移
            }
            head.next = reverseNode.next;//原链表头部指向反转链表头部指向的结点,,实现反转
        }
    
  • 相关阅读:
    前端TypeScript编写的代码发布后怎么在浏览器中调试
    oracle中的执行计划
    oracle中的物化视图
    oracle中的exists 和not exists 用法
    Oracle中的索引详解
    Oracle中动态SQL拼接
    oracle 中sql优化的几种方法
    oracle中常用函数大全
    Oracle中游标的用法
    oracle中表分区的实现
  • 原文地址:https://www.cnblogs.com/Mhang/p/12306457.html
Copyright © 2011-2022 走看看