• 单链表反转


     单链表是一种常见的数据结构,由一个个节点通过指针方式连接而成,每个节点由两部分组成:一是数据域,用于存储节点数据。二是指针域,用于存储下一个节点的地址。

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

    所谓的单链表反转,就是把每个节点的指针域由原来的指向下一个节点变为指向其前一个节点。但由于单链表没有指向前一个节点的指针域,因此我们需要增加一个指向前一个节点的指针pre,用于存储每一个节点的前一个节点。此外,还需要定义一个保存当前节点的指针cur,以及下一个节点的next。定义好这三个指针后,遍历单链表,将当前节点的指针域指向前一个节点,之后将定义三个指针往后移动,直至遍历到最后一个节点停止。

    public static Node reverseListNode(Node head){
            //单链表为空或只有一个节点,直接返回原单链表
            if (head == null || head.getNext() == null){
                return head;
            }
            //前一个节点指针
            Node preNode = null;
            //当前节点指针
            Node curNode = head;
            //下一个节点指针
            Node nextNode = null;
     
            while (curNode != null){
                nextNode = curNode.getNext();//nextNode 指向下一个节点
                curNode.setNext(preNode);//将当前节点next域指向前一个节点
                preNode = curNode;//preNode 指针向后移动
                curNode = nextNode;//curNode指针向后移动
            }
     
            return preNode;
        }


    原文链接:https://blog.csdn.net/lwkrsa/article/details/82015364

  • 相关阅读:
    【BZOJ 2120】 数颜色
    【BZOJ 1878】 HH的项链
    【BZOJ 2038】小Z的袜子
    【BZOJ 2724】 蒲公英
    【POJ 2482】 Stars in Your Windows
    【POJ 2182】Lost Cows
    __align(num) 分析
    C# 获取图片某像素点RGB565值
    基于OpenCV的火焰检测(三)——HSI颜色判据
    基于OpenCV的火焰检测(一)——图像预处理
  • 原文地址:https://www.cnblogs.com/dingpeng9055/p/11729744.html
Copyright © 2020-2023  润新知