【问题标题】:Recursive struct definitions in Solidity (Creating Linked Lists)Solidity 中的递归结构定义(创建链接列表)
【发布时间】:2017-10-23 07:23:33
【问题描述】:

我主要接受 Java 培训,所以这对我来说从来都不是问题,但我正在尝试在 Solidity 中为我正在处理的智能合约创建一个链接列表。在其中,我使用的是这样编写的结构:

struct Node {
    address addr; 
    Node _next;
    Node prev;
}

虽然我仍在研究将其保留为单链表还是双链表是否值得的问题,但主要问题是我在 Node 结构中引用 Node 结构时遇到了递归结构定义问题。我有点不确定我的替代方案是什么。这只是语言的限制吗?我读了this thread,但我无法确定给出的答案是否不仅仅是“取决于”。

感谢您的任何反馈;如果我能提供更多信息,请告诉我。

【问题讨论】:

    标签: recursion struct linked-list solidity


    【解决方案1】:

    你可以这样做(双链表):

    pragma solidity ^0.4.24;
    
    
    contract LinkedList {
    
        struct Node {       
            string data;
            uint pointPrevNode;
            uint pointNextNode; 
        }
    
        mapping(uint => Node) public nodes;
        uint public nodeNumber = 0;
        uint public count = 1;
    
        function setData(string _data) public {
            nodes[count].data = _data;
            assignPointers(count);  
        }
    
        function assignPointers(uint _count) internal {
            nodes[nodeNumber].pointNextNode = _count;
            nodes[_count].pointPrevNode = nodeNumber;
            nodeNumber = _count;
            count++;
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-11
      • 2017-11-12
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多