zoukankan      html  css  js  c++  java
  • 重学数据结构(四)——实现单链表的反转

    单链表反转

    思路:

    单链表反转:就是把每个节点的指针域由原来的指向下一个节点变为指向其前一个节点。
     
     思路:
     1.因为单链表没有指向前一个节点的指针域,所以这里需要创建一个指向前一个节点的指针pre,用于存储每一个节点的前一个节点。
     2.需要定义一个保存当前节点的指针cur,以及下一个节点的next。
     3.先创建cur(当前节点),pre(前一个节点)指针后,遍历单链表,将当前节点的指针域指向前一个节点,之后将定义的pre和cur指针往后移动,直至遍历到最后一个节点停止。
    

    Node类的实现

    package com.codezs.datastruct.mylinkedlist;
    
    public class Node<T> {
        T data;
        Node<T> next;
    
        Node(Node<T> next) {
            this.next = next;
        }
    
        public Node(T data, Node<T> next) {
            this.data = data;
            this.next = next;
        }
    
        public T getData(){
            return data;
        }
        public Node<T> getNext(){
            return next;
        }
        public void setNext(Node<T> next){this.next = next;}
    
    }
    
    package com.codezs.datastruct.mylinkedlist;
    
    public class LinkListReverse {
        //实现单链表的反转
        public static Node reverse(Node node){
            //当前节点
            Node cur = node;
            //前一个节点
            Node pre = null;
    
            while (cur != null){
                //取出当前节点的下一个节点
                Node next = cur.next;
                //当前节点的next指向前一个节点
                cur.next = pre;
                //前一个节点向后移动
                pre = cur;
                //当前节点向后移动
                cur = next;
            }
            return pre;
        }
    
    }
    
  • 相关阅读:
    laravel 5.2 引入第三方类
    jquery获得option的值和对option进行操作
    复习知识点
    前端使用crypto.js进行加密
    使用jQuery Pagination Plugin实现分页效果
    配置文件
    MyBatis的适用场景和生命周期
    使用GET方式提交的表单遇到的问题
    Java复习——网络编程
    SpingData 的学习
  • 原文地址:https://www.cnblogs.com/zsiscool/p/13370089.html
Copyright © 2011-2022 走看看