Рекурсивный вызов класса (Реализация связанного списка) - PullRequest
2 голосов
/ 21 февраля 2012

Привет, я пытаюсь реализовать связанный список в Matlab.

Реализация, которую я надеюсь сделать, - это (это эквивалент C):

class Node{
    public Node* child;
}

Я огляделся, но, похоже, не нашел ничего достаточно близкого.

1 Ответ

6 голосов
/ 21 февраля 2012

Я предполагаю, что вы хотите реализовать связанный список:

   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
...