我正在做一个关于matlab和python编程的入门课程,我只编码了很短的时间,所以我仍然在学习基础知识。 在我试图解决的问题中,老师给了我们一个创建链表的代码。
classdef Elem < handle
%Elem A class realising a linked list.
properties
data
next = Elem.empty
end
methods
function node = Elem(value)
if (nargin > 0)
node.data = value;
end
end
function obj = insert(obj, value)
if(isempty(obj.next))
obj.next = Elem(value);
else
obj.next.insert(value);
end
end
% More methods go here
end
end
然后,其中一个问题是制作一个代码,可以在链表中的数字之前插入一个数字。 为此,我编写了此代码。
function newlist=InsertBefore(list,newdata,dataBefore)
if ~isempty(list)
if list.data==dataBefore
newlist = Elem(newdata);
newlist.next = list;
elseif list.next.data==dataBefore
newlist=list;
newelem = Elem(newdata);
newelem.next = list.next;
newlist.next = newelem;
else
InsertBefore(list.next,newdata,dataBefore)
end
end
end
如果我然后写
linkedlist2=InsertBefore(LinkedList,4,12)
该函数创建一个新列表,其中 4 在 12 前面是列表中的第一个数字。 所以代码的"If"部分工作正常。 如果我尝试在列表中间用一个数字做同样的事情,它会说。
Output argument "newlist" (and maybe others) not assigned during call to "InsertBefore".
我已经尝试了很多事情,但还没有真正完美的工作,所以非常感谢您的帮助
谢谢
拉塞
已解决 必须有 还新列表 =InsertBefore(list.next,newdata,dataBefore(