首页 > 解决方案 > 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
}

您的帮助将不胜感激。

标签: pointersdart

解决方案


考虑在哪里更新 的值headNode。你到底给那里分配了什么?

headNode具有函数作用域,这意味着它只存在于addNote函数内部。同样head在你的main函数中也有函数范围,所以它只能在你的主函数中访问。

似乎您正在尝试head从内部进行更新,addNode但这不是您在这里所拥有的。

一种可能的解决方案是从返回新创建的节点addNode并使用返回的值headmain函数中重新分配。它看起来像这样:

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]


推荐阅读