js实现链表翻转
js中本身是不存在链表的,但是对象的属性值可以为另一个对象,这样我们就有条件自己使用对象的特性,自己手动的写出一个链表。
- 首先创建多个对象,我这里就使用三个了,多了太麻烦,话不多说,代码里解释
代码块
(function (){ //这里定义一个自执行函数
//构建链表 这里要注意,链在最后的对象要最开始声明,不然取到next的值就是undefined,这里变量提升,都先赋值为undefined
var obj3 = {
name:'obj3',
next:null
}
var obj2 = {
name:'obj2',
next:obj3
}
var obj1 = {
name:'obj1',
next:obj2
}
function printLst(node){ //这段是用来输出链表的
var p = node;
while(p){
console.log(p.name)
p = p.next;
}
}
function reverse(nodeLst){
var pNode = nodeLst;
var pPre = null; //翻转之后 第一个节点的next值 为 null
var pNext;
while(pNode){
pNext = pNode.next; //获取到当前节点的下一个节点
pNode.next = pPre; //当前节点的前一个指向上一个节点
pPre = pNode; //上一个节点赋值为当前节点
pNode = pNext; //当前节点赋值为下一个节点
}
return pPre;
}
printLst(reverse(obj1));
})();
... prompt'''
运行结果也是没错的
控制台输出 obj3 obj2 obj1