我在编程方面天真,所以我需要数据结构方面的帮助,我想分割一个列表,我已经编写了下面的代码,可以任何正文帮我确定,这是正确的。我将不胜感激。
public Map<LinkedList, LinkedList> split(LinkedList list){
int length = list.getSize();
LinkedList list1 = new LinkedList();
//LinkedList list2 = new LinkedList();
//Node temp = end;
for (int i=1; i<length/2; i++ )
{
list1.pushFront(list.popBack().getData());
}
Map<LinkedList, LinkedList> map = new HashMap<LinkedList, LinkedList>();
map.put(this, list);
map.put(this, list1);
return map;
}
答案 0 :(得分:0)
首先,对于方法中的返回类型,Map是一个奇怪的选择,并且您以一种奇怪的方式使用它。我建议一个void方法接受对源列表和两个目标拆分列表的引用。
public void split (LinkedList source,LinkedList,target1,LinkedList target2)
{
}
其次,您应该决定您的方法是更改源列表还是保持不变。您当前的实现删除了一半的源列表并将其添加到输出列表。
如果这是你的意图,你的方法可以有两个参数,如下所示:
public void split (LinkedList source,LinkedList,target)
{
for (int i=1; i<length/2; i++ )
{
target.pushFront(source.popBack().getData());
}
}
在这种情况下,您可以交替决定在方法内创建新列表并让方法返回它,但这会让人感到困惑,因为实际输出既是输入列表(您修改了)又创建了新列表通过该方法。这就是为什么我认为最好不要退货。