js创建单链表及倒序单链表

最近在准备校招,又拾起了数据结构……希望能早点找到心仪的工作嘻嘻

创建单链表首先要有节点,节点包含两部分,一部分存储数据,一部分存储指向下一个节点的链接。

节点可以用一个类来表示:

function Node(data){
    this.data = data;  //数据
    this.next = null;  //链接
}

还需要一个链表类来表示链表的一些属性及方法:(包含一个属性,即头节点,标记链表的开始)

function List(){
    this.head = new Node("head");  //创建一个头节点
    this.addFirst = addFirst;  //从头部插入一个节点,从而创建链表
    this.display = display;  //显示链表的数据
    this.listReverse = listReverse;   //倒序单链表
}

//从链表头部插入一个节点,newEle是新节点的数据
function addFirst(newEle){
    var newNode = new Node(newEle);
    //如果链表为空,则直接加在头节点后面
    if(this.head.next === null){
        this.head.next = newNode;
    }else{//如果链表不为空,则在头节点与第一个节点之间插入新节点
        var first = this.head.next;
        newNode.next = first;
        this.head.next = newNode;
    }
}

//倒序单链表,将原链表中的节点从头部开始一个个删除并加到新链表中,最后返回新链表
function listReverse(){
    var reverseList = new List();  //创建一个新链表存放倒序后的链表
    var currNode = this.head.next;  //得到头节点后面的一个节点
    while(currNode !== null){  //链表不为空
        this.head.next = currNode.next;  //删除原链表中的第一个节点
        //将删除的节点加到新链表的头节点的后面
        currNode.next = reverseList.head.next;  
        reverseList.head.next = currNode;
        //将当前节点指向原链表中的第一个节点(即头节点的后面一个节点)
        currNode = this.head.next;
    }

    return reverseList;  //返回新链表
}

//显示
function display(){
    var currNode = this.head;
    while(currNode.next !== null){
        console.log(currNode.next.data);
        currNode = currNode.next;
    }
}

测试:

//创建一个链表并向其中添加节点
var list = new List();
list.addFirst('fj');
list.addFirst('luv');
list.addFirst('wp');
//显示
list.display();

结果:
创建单链表

倒序链表:

list.display.call(list.listReverse());

结果:
倒序单链表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值