内容简介:链表是一个集合,是C或C++中的概念。和数组有什么区别呢?链表每个元素有两部分组成,第一部分是存储的值,第二部分是记录了下一个元素的位置信息。在C中即使下一个元素的指针,其实就通过第二个属性能直接拿到下一个元素的值。一个元素通过他的
什么是链表
链表是一个集合,是C或C++中的概念。和数组有什么区别呢?
链表每个元素有两部分组成,第一部分是存储的值,第二部分是记录了下一个元素的位置信息。在C中即使下一个元素的指针,其实就通过第二个属性能直接拿到下一个元素的值。
{
value:"",
next:1
}
一个元素通过他的 next
就知道下一个值是什么。就像一个链子,上一个元素连着下一个元素。
向链表中插入一个值,不需要把后面的每个元素往后移动位置。
1.只需要把修改插入位置前一个元素的next属性只想插入的值;
2.插入的值的next只插入之后的那个元素即可。
因为在JavaScript中不能像C一样那样直接操作指针,所以现在用数组模拟一个链表。
javascript版本的链表
//比如有一个集合
let left = [2, 3, 4, 5, 8, 9];
//用另一个集合对应位置的值来记录下一个元素的索引。每个值存储的是需要获取值的索引,如果没有对应的则存-1;
//这个集合的奥妙在于,它的**索引**和**值**是能串联起来的“一条绳”,索引和值前后衔接。
// [1, 2, 3, 4, 5, -1]
// 0 1 2 3 4 5
let right = [1, 2, 3, 4, 5, -1];
//一个要插入的值
let middle = 6;
let len = left.length;
left.push(middle);
let t = 0;
while (t != -1) {
if (left[right[t]] > middle) {
right[len] = right[t];
right[t] = len;
break;
}
t = right[t];
}
console.log("输出结果:");
console.log(left);
console.log(right);
t = 0;
while (t != -1) {
console.log(left[t]);
//这就体现出了索引和值前后衔接的关系了。注意right的索引用的也是t
t = right[t];
}
结果
分析
原始:
[2, 3, 4, 5, 8, 9]; [1, 2, 3, 4, 5, -1]
插入后:
所谓的插入是保证输出的顺序像插入的效果。
[2, 3, 4, 5, 8, 9, 6]; [1, 2, 3, 6, 5, -1, 4]
以上所述就是小编给大家介绍的《JavaScript实现链表》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- php如何实现session,自己实现session,laravel如何实现session
- AOP如何实现及实现原理
- webpack 实现 HMR 及其实现原理
- Docker实现原理之 - OverlayFS实现原理
- 为什么实现 .NET 的 ICollection 集合时需要实现 SyncRoot 属性?如何正确实现这个属性?
- 自己实现集合框架(十):顺序栈的实现
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
How to Build a Billion Dollar App
George Berkowski / Little, Brown Book Group / 2015-4-1 / USD 24.95
Apps have changed the way we communicate, shop, play, interact and travel and their phenomenal popularity has presented possibly the biggest business opportunity in history. In How to Build a Billi......一起来看看 《How to Build a Billion Dollar App》 这本书的介绍吧!