pointers - Dart 编程中的链表,如何处理 Dart 中的指针或如何在 Heap 上存储变量?
问题描述
我总是得到空值。我是这门语言的初学者。谢谢你的理解。
class Node{
int data;
Node next;
Node(int value){
data = value;
}
}
void addNode(Node headNode, int aValue){
Node newNode = new Node(aValue); //creating new node
newNode.next = headNode; // pointing the next to headNode
headNode = newNode; // updating the head Node
}
void main(){
Node head = Node(1);
addNode(head,2);
addNode(head,3);
print(head.next.data); //here I always get null
}
您的帮助将不胜感激。
解决方案
考虑在哪里更新 的值headNode
。你到底给那里分配了什么?
headNode
具有函数作用域,这意味着它只存在于addNote
函数内部。同样head
在你的main
函数中也有函数范围,所以它只能在你的主函数中访问。
似乎您正在尝试head
从内部进行更新,addNode
但这不是您在这里所拥有的。
一种可能的解决方案是从返回新创建的节点addNode
并使用返回的值head
在main
函数中重新分配。它看起来像这样:
Node addNode(Node headNode, int aValue){
Node newNode = new Node(aValue);
newNode.next = headNode;
return newNode;
}
void main(){
Node head = Node(1);
head = addNode(head,2);
head = addNode(head,3);
print(head.next.data);
}
还要考虑一件事:当执行到程序结束时,您的列表是什么样的?是[1] > [2] > [3]
还是[3] > [2] > [1]
?
推荐阅读
- javascript - 我的讲师分配给我的 6 个 JavaScript 任务
- python - 在 python 中使用 sqlalchemy 连接到 postgres 时在哪里提到架构
- sorting - 如何编写脚本以使用公式自动对列进行排序并在每次更改时更新?
- python - 样本数据脚本查询?
- netlify - 如何在 netlify 上提供 robots.txt 和 sitemap.xml?
- github - 有什么方法可以配置 GitHub 或 ArgoCd 以获取在 JFrog Artifactory 中完成的任何更新的通知?
- node.js - Node.js 关于缓冲区、流、管道、axios、createWriteStream 和 createReadStream 的混淆
- datetime - Elasticsearch NEST 客户端日期时间反序列化
- reactjs - 在 JSX 文件中的空标签 <> 之后需要语法高亮帮助
- python - 为什么每次运行我的函数时都会出错?