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

来源:互联网 发布:杜兰特2016西决数据 编辑:程序博客网 时间:2024/06/06 17:50

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

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

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

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());

结果:
倒序单链表

原创粉丝点击