JS编写单链表及其操作

本文介绍了如何在链表中进行插入和删除操作,以及提供了一份针对Python初学者和进阶者的全套学习资料,包括体系化的前端开发知识和实战项目资源。
摘要由CSDN通过智能技术生成

// 在某位置插入新值

insert(index, val) {

if (index < 0 || index > this.length - 1) {

return false

}

let newInsertNode = new Node(val)

let current = this.head

let currIndex = 0

if (index === 0) {

newInsertNode.next = current

this.head = newInsertNode

} else {

let pre = null

while (currIndex < index) {

pre = current

current = current.next

currIndex++

}

newInsertNode.next = current

pre.next = newInsertNode

}

this.length++

return true;

}

//根据位置删除指定节点,成功返回元素,失败返回null

removeAt(position) {

if (position >= 0 && position < this.length) {

var current = this.head //current指针用来指向该指定节点

var previous = null //previous指针指向current指针前一个节点

var index = 0 //纪录是否到达指定位置

if (position == 0) {

this.head == current.next

} else {

while (index < position) {

previous = current //每次将previous指针和current指针向后移动一个,直到到达指定节点

current = current.next

index++

}

previous.next = current.next //该指定节点的前一个指针越过指定节点,直接指向其下一个节点

}

this.length-- //别忘了更新链表长度

return current.val //返回该元素

} else {

return null

}

}

//根据元素删除指定元素,成功返回已删除的节点,失败返回null

remove(val) {

let index = this.find(val)

return this.removeAt(index)

}

//根据元素查找节点,成功返回给定元素的索引,如果没有则返回-1

find(val) {

var current = this.head

var index = 0

if (current.val == val) {

return 0

}

while (current) {

if (current.val == val) {

return index

}

current = current.next

index++

}

return -1

}

isEmpty() {

return this.length == 0

}

size() {

return this.length

}

toString() {

let str = ‘’

let current = this.head

while (current) {

str += ‘,’ + current.val

current = current.next

}

return str

}

}

let newList = new LinkedList()

newList.append(‘1’)

newList.append(‘2’)

newList.insert(1, 4)

newList.insert(2, 8)

newList.removeAt(1);

// console.log(“查找节点:”,newList.find(“1”));

console.log(“单链表的有效节点个数:”,newList.size());

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

008edf79.png)

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)

  • 24
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值