swift - 可视化指针 - Swift 中的 LinkedList
问题描述
阅读这些“指针”时我遇到了一些麻烦,我的大脑很痛——你如何有效地阅读指针并可视化指针?
下面是一个简单的示例,但在我的大脑中读取/跟踪这些指针(上一个和下一个)是一项艰巨的任务。我们如何以更少的认知努力来解决这个问题?
我如何看到/可视化删除链表中的节点是认为链表就像一行人和人们互相指指点点(dnd 5e 中的地狱般的谴责),如果他们在人的前面和旁边......这有帮助但效率不高。
public func remove(node : Node<Element>) -> Element {
let prev = node.previous
let next = node.next
if let prev = prev {
prev.next = next
}
else {
head = next
}
if let next = next {
next.previous = prev
}
else {
tail = prev
}
node.previous = nil
node.next = nil
return node.value
}
解决方案
将每个节点绘制为一个框。
在每个框中,提供一个“指针”部分。从指针部分画一个箭头到另一个框。
将指针视为邮寄地址。每个盒子(节点)都有前一个和下一个节点的(邮寄)地址。
如果删除一个节点,则必须更新存储在相邻节点中的邮寄地址,以便它们不再尝试指向现在丢失的节点的顶部。
从邮寄地址到内存地址并不是一个很大的跳跃,这是指针实际存储的内容。
推荐阅读
- pine-script - 由于循环内调用函数,我的自定义 EMA 会出错吗?
- css - 我怎样才能在这张图片上之前覆盖它?
- xml - xml中枚举值的自定义排序
- c++ - C++ FTraceDatum 从来没有命中
- java - 将 .arff 文件上传到 Eclipse
- amazon-web-services - AWS Glue 作业参数“MaxConcurrentRuns”如何与 StepFunction 的并发执行相关联
- jenkins - 在 Jenkins/Selenium Grid 中按顺序运行多个 Testcafé 测试
- php - 用另一个对象的公共变量初始化一个对象
- android - 如何使半视图不可点击
- visual-c++ - 将带有数组的结构作为参数传递给 C++ dll 问题中的函数