在链表中的给定数字之前插入一个数字



我正在做一个关于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(

相关内容

  • 没有找到相关文章

最新更新