克隆链接列表而不使用任何内置函数。

时间:2014-05-29 20:50:09

标签: java

我今天去采访了这个问题。我无法想出答案。

演出是 SList2 = SList1.clone();

如果你改变SList1中的东西(例如编辑对象),它不会影响SList2中的类似对象。我尝试它,我创建新的节点,但每当我到达克隆对象部分我失败了。正在考虑object.clone(),但问题是没有允许内置函数。

2 个答案:

答案 0 :(得分:1)

Slist2.head = new Node();
Node newList = Slist2.head; 
Node head = Slist1.head;
Slist.head.(all data) = head.(all data);
while(head.hasNext()){
    head = head.next();
    Node newGuy = newNode();
    newNode.(all data) = node.(all data)
    newList.next = newGuy;
}

这将遵循旧列表,手动将所有数据复制到新节点并将该节点添加到新列表

答案 1 :(得分:0)

这是伪装成一个问题的两个问题。

  • 我如何从链接列表对象和
  • 中读取
  • 我如何以不重复使用引用的方式创建它(也就是说,我不只是将一个列表的头部重新分配给另一个列表的头部?)

不要深入研究代码,让我们从高层看这个问题。如果你的链表可以提供迭代(也就是说,它有一个类似Iterator的对象,它在列表中保持其状态,并在引用next()时返回一个节点),那么第一个问题就变成了通过迭代器迭代链表。

从那里开始,您可能想要从迭代的内容中剥离原始值,并添加到新的链接列表对象中。

那时你已经完成了很多事情;没有什么花哨的东西需要解决。它实际上是从一个结构中获取数据并将其插入另一个结构中。