JavaScript数据结构与算法学习笔记之单链表

本文详细介绍如何使用JavaScript实现单链表的基本操作,包括节点追加、删除、插入等,并提供了完整的代码示例。

下面是一个链表


一、用Javascript实现一个链表及基本功能

/**
*单链表的实现
**/
function LinkedList() {
    //定义一个节点
    var Node = function (element) {
        this.element = element;
        this.next = null;
    }
    
    var length = 0; // {2}
    var head = null; // {3}
    //节点追加
    this.append =  function(element){
        var node = new Node(element),
        current;
        if(head==null){
            head = node;
        } else{
            current = head;
            //循环列表,直到找到最后一项
            while(current.next){
                current = current.next;
            }
            //找到最后一项,将其next赋为node,建立链接
            current.next = node;
            
        }
        length++;//更新列表的长度
    }

    //删除节点
    this.removeAt = function(position){
        //检查越界值
        if(position > -1 && position <length){
            var current = head,
            previous,
            index = 0;
            //移除第一项
            if(position === 0){
                head = current.next;
            } else{
                while(index++ < position){
                    previous = current;
                    current = current.next;
                }
                //将previous与current的下一项链接起来:跳过current,从而移除它
                previous.next = current.next;
            }
            length--;
            return current.element;
        }else{
            return null;
        }
    };
    
    //指定位置插入一个节点
    this.insert = function (position,element) {
        if(position >= 0 && position <= length ){
            var node = new Node(element),
            current = head,
            previous,
            index = 0;
       
            if(position === 0){
                node.next = current;
                head = node;
            } else{
                while(index++ < position){
                    previous = current;
                    current = current.next;
                }
                node.next = current;
                previous.next = node;
            }
            length++;
            return true;

        } else{
            return false;
        }
    }


    this.toString = function () {
        var current = head,
        string = '';
        while(current){
            string = current.element;
            current = current.next;
        }
        return string;
    }

    
    this.indexOf = function (element) {
        var current = head,
        index = -1;
        while(current){
            if(element === current.element){
                return index;
            }
            index++;
            current = current.next;
        }
        return -1;
    }


    this.remove =  function(element){
        var index  = this.indexOf(element);
        return this.removeAt(index);
    }


    this.isEmpty = function(){
        return length === 0;
    }


    this.size = function(){
        return length;
    }


    this.getHead = function() {
        return head
    }
}

 

【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究改进中。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值