// 在某位置插入新值
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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)
008edf79.png)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)