342_ 数据结构和算法的基本介绍-Go语言 数据结构与算法 | 15小时
热门回复:
- HxllXwHxrizXn:音源很差
- 学习使我happy哈哈哈:这不就是韩顺平的golang么
- 90863600665_bili://环形列表删除,和老师的相比少一层循环
func (this *circleNode) Del(no int) *circleNode {
//第一种情况,判断数组存在
if this.nextNode == nil {
fmt.Println("环形链表为空")
return this
}
//判断环形链表只有一个元素
if this.nextNode == this {
this.nextNode = nil
return this
}
//环形链表长度大于1
tmp := this //过渡节点,用于循环比较
next := this.nextNode //头节点的下一个节点,结束循环的判断条件,此方法是用当前节点的下一个节点来作比较,所以当最后一个节点是头节点的下一个节点时,头节点才能被比较,所以又新增一个结束循环标记,来跳过第一个循环
nextFlag := true //结束循环的判断条件
for {
if tmp.nextNode.no == no {
//判断删除的是头节点时,重新将头节点赋值
if tmp.nextNode == this {
this = tmp.nextNode.nextNode
}
tmp.nextNode = tmp.nextNode.nextNode
break
}
//当前节点的下一个节点是第二个节点时,并且不是第一次循环时,结束循环
if tmp.nextNode == next && nextFlag == false {
break
}
nextFlag = false
tmp = tmp.nextNode
}
return this
}
- 炒鸡代码:如果对源 码感兴趣的胖友,可以访问~
https://t.cn/A67Udmly
- 库里法法:为什么不直接加个计数变量呢