码迷,mamicode.com
首页 > 编程语言 > 详细

1.单链表的逆序(JavaScript版) 使用递归实现

时间:2020-06-22 18:51:54      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:const   spl   ret   lan   ==   pre   fun   ext   eva   

ES6版本 链表逆序:

技术图片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //阅读下面的代码,需要ES6的知识

        class Node{//创建节点类
            constructor(value){
                this.value = value;
                this.next = null;
            }
            setNextNode(node){
                this.next = node;
            }
            getNextNode(){
                return this.next;
            }
            setNodeValue(value){
                this.value = value
            }
            getNodeValue(){
                return this.value;
            }
        }

        //创建五个链表节点
        const node1 = new Node(1);
        const node2 = new Node(2);
        const node3 = new Node(3);
        const node4 = new Node(4);
        const node5 = new Node(5);

        //将五个节点连接起来
        node1.setNextNode(node2);
        node2.setNextNode(node3);
        node3.setNextNode(node4);
        node4.setNextNode(node5);

        //通过递归方式,将链表顺序逆转
        function reserveList(root){
            //下面的if条件是递归的结束条件
            if(root.getNextNode().getNextNode() == null){//判断是否是倒数第二个节点
                root.getNextNode().setNextNode(root);//将最后一个节点的next指向倒数第二个节点
                return ;
            }else{//不是倒数第二个节点
                reserveList(root.getNextNode());//继续递归
                root.getNextNode().setNextNode(root);//将下一个节点的next指向当前节点
                root.setNextNode(null);//将当前节点的next指向null
            }
        }
        //调用逆转链表函数
        reserveList(node1);

        //通过递归方式,遍历链表函数
        function forEachList(node){
            if(node == null) return;
            console.log(node.getNodeValue());
            forEachList(node.getNextNode());
        }

        //调用遍历链表函数
        forEachList(node5);
    </script>
</body>
</html>
链表逆序(ES6版)

 

ES5版本 链表逆序:

技术图片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        //阅读下面的代码,需要ES5的知识

        function Node(value){//创建节点类
            this.value = value;
            this.node = null
        }

        //创建五个链表节点
        var node1 = new Node(1);
        var node2 = new Node(2);
        var node3 = new Node(3);
        var node4 = new Node(4);
        var node5 = new Node(5);

        //将五个节点连接起来
        node1.next = node2;
        node2.next = node3;
        node3.next = node4;
        node4.next = node5;

        //通过递归方式,将链表顺序逆转
        function reserveList(root){
            //下面的if条件是递归的结束条件
            if(root.next.next == null){//判断是否是倒数第二个节点
                root.next.next = root;//将最后一个节点的next指向倒数第二个节点
                return ;
            }else{//不是倒数第二个节点
                reserveList(root.next);//继续递归
                root.next.next = root ;//将下一个节点的next指向当前节点
                root.next = null;//将当前节点的next指向null
            }
        }
        //调用逆转链表函数
        reserveList(node1);

        //通过递归方式,遍历链表函数
        function forEachList(node){
            if(node == null) return;
            console.log(node.value);
            forEachList(node.next);
        }

        //调用遍历链表函数
        forEachList(node5);
    </script>
</body>
</html>
链表逆序(ES5版)

 

1.单链表的逆序(JavaScript版) 使用递归实现

标签:const   spl   ret   lan   ==   pre   fun   ext   eva   

原文地址:https://www.cnblogs.com/lanshanxiao/p/13178229.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!