【问题标题】:Recursively calling a class (Implementing linked list)递归调用一个类(实现链表)
【发布时间】:2012-02-20 21:33:26
【问题描述】:

您好,我正在尝试在 Matlab 中实现一个链表。

我希望做的实现是(这是 C 等价的):

class Node{
    public Node* child;
}

我环顾四周,但似乎没有很接近任何东西。

【问题讨论】:

  • 如果您能稍微澄清一下这个问题会很有帮助。 (1) 你说你正在尝试实现一个递归方法,但你没有说你想要它做什么或你已经尝试过什么。 (2) 你说“这是 C 的等价物”,但后面跟着不是 C 的东西。(这似乎不涉及任何方法,递归或其他。)
  • 如果您的实际目标只是让一个类的属性值是对同一类的另一个对象的引用......那么您不需要做有什么特别的。 MATLAB 类的属性没有附加类型,没有什么能阻止你说(例如)x.child = x。但是您可能应该说class myclass < handle,以便您使用参考而不是副本。
  • 很抱歉我的观点含糊不清。虽然我环顾四周的是 OOP 的链表实现。

标签: oop matlab data-structures linked-list


【解决方案1】:

我猜你想实现一个链表:

   classdef Node < handle
       properties
          Next = Node.empty(0); %Better than [] because it has same type as Node.
          Data;
       end         

       methods
           function this = Node(data)
               if ~exist('data','var') 
                  data = [];
               end
               this.Data = data;
           end
       end
   end

创作:

   n1 = Node('Foo'); %Create one node
   n2 = Node('Bar'); %Create another one
   n1.Next = n2; %Link between them

迭代:

   n = n1;
   while ~isempty(n)
       disp(n.Data);   %Change this line as you wish
       n = n.Next;           
   end

【讨论】:

    猜你喜欢
    • 2015-08-14
    • 2015-05-06
    • 1970-01-01
    • 2019-02-26
    • 2019-06-16
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    相关资源
    最近更新 更多