❤️ Author: 老九
☕️ 个人博客:老九的CSDN博客
🙏 个人名言:不可控之事 乐观面对
😍 系列专栏:
文章目录
- 链表
- 数组转链表
- 链表转数组
- 往链表的前面增加一个节点
- 获得指定位置的值
- 在链表的末尾增加一个节点
- 在链表的pos位置增加一个值为val的结点
- 删除链表pos位置的元素
链表
- 第一个对象拿着第二个对象的引用,数组可以随时读取,但链表得遍历,数组插入数据比较复杂,但是链表插入数据比较简单
- 链表:易增删,难查找;数组:易查找,难增删;数组是使用连续的内存空间存储的,链表是使用离散的内存空间存储的,其中每个节点存储了下一个节点的位置,每个结点在内存中的位置是随机的,结点之间由每个结点记录的下一节点的位置来确定其内在顺序
- 拼接的话:node.next = p.next; p.next = node
数组转链表
<script>
function arrayToList(ary) {
var dummy = {
val: 0,
next: null,
}
var prevNode = dummy
for (var i = 0; i < ary.length; i++) {
var node = {
val: ary[i],
next: null,
}
prevNode.next = node
prevNode = node
}
return dummy.next
}
</script>
- 注意这个方法得的值要赋给list,因为在js语言中,传的变量都是值,不会改变变量的值,需要重新创建变量传递才可以,所以要写成list = prepend(list,ary[i])
<script>
function arrayToList2(ary) {
var list = null
for (var i = ary.length - 1; i >= 0; i--) {
list = prepend(list, ary[i])
}
return list
}
</script>
链表转数组
<script>
function listToArray(list) {
var result = []
while (list) {
result.push(list.val)
list = list.next
}
return result
}
</script>
往链表的前面增加一个节点
<script>
function prepend(list,val){
var node = {
val : val,
next : list
}
return node
}
</script>
获得指定位置的值
<script>
function nth(list, n) {
if (n < 0) {
return undefined
}
var p = list
for (var i = 0; i < n && p; i++) {
p = p.next
}
if (p) {
return p.val
} else {
return undefined
}
}
</script>
在链表的末尾增加一个节点
<script>
function append(list, val) {
var p = list
var node = {
val: val,
next: null,
}
if (!list) {
return node
}
while (p.next) {
p = p.next
}
p.next = node
return list
}
</script>
在链表的pos位置增加一个值为val的结点
<script>
function insert(l, val, idx) {
var node = {
val: val,
next: null
}
if(l == null){
return node
}
if (idx == 0) {
node.next = l
return node
}
var p = l
for (var i = 0; p.next && i < idx - 1; i++) {
p = p.next
}
node.next = p.next
p.next = node
return l
}
</script>
删除链表pos位置的元素
<script>
function del(head, idx) {
if (idx == 0) {
return head.next
}
var p = head
for (var i = 0; p.next && i < idx - 1; i++) {
p = p.next
}
if (i == idx - 1) {
p.next = p.next.next
}
return head
}
</script>
————————————————————————
♥♥♥码字不易,大家的支持就是我坚持下去的动力♥♥♥
版权声明:本文为CSDN博主「亚太地区百大最帅面孔第101名」的原创文章