Java 实现双链表的序列化和反序列化功能,定义如下:
大家好。 有一家公司给了我一个有趣的任务,但没有特定语言的约束。我在C++和C语言中发现了一些实现,但是我是一个java的Pro,不能完全理解java如何实现。 任务: 您可以使用任何常用语言来完成任务。 测试应在不使用库/标准序列化工具的情况下执行。实现双链表的序列化和反序列化功能,定义如下:Java 实现双链表的序列化和反序列化功能,定义如下:,java,serialization,linked-list,doubly-linked-list,Java,Serialization,Linked List,Doubly Linked List,大家好。 有一家公司给了我一个有趣的任务,但没有特定语言的约束。我在C++和C语言中发现了一些实现,但是我是一个java的Pro,不能完全理解java如何实现。 任务: 您可以使用任何常用语言来完成任务。 测试应在不使用库/标准序列化工具的情况下执行。实现双链表的序列化和反序列化功能,定义如下: class ListNode { public ListNode Prev; public ListNode Next; public ListNode Rand; //rand
class ListNode
{
public ListNode Prev;
public ListNode Next;
public ListNode Rand; //random element
public string Data;
}
class ListRand
{
public ListNode Head;
public ListNode Tail;
public int Count;
public void Serialize(FileStream s)
{
}
public void Deserialize(FileStream s)
{
}
}
我了解双链表是如何工作的。我找到了标准的链表实现(它没有变量Count,节点没有变量Rand)。我应该如何处理这些变量
我在SO上找到了Similar主题,现在我的代码如下所示:
public class ListRand implements Serializable {
private ListNode Head;
private ListNode Tail;
private int Count;
public void Serialize(ObjectOutputStream out) throws IOException {
for (ListNode e = Head; e!=null; e = e.getNext()) {
out.writeObject(e.getData());
}
}
public void Deserialize(ObjectInputStream in) throws IOException, ClassNotFoundException {
in.defaultReadObject();
}
}
请给我一些建议,我想自己解决这个任务,因为我从来没有做过同样的任务。问题不是要你去执行它。它要求您对其进行序列化和反序列化。它告诉您应该在不使用库/标准序列化工具的情况下执行测试。因此,您可能不使用Serializable和ObjectOutputStream。因为这些正是您可能不使用的标准序列化工具。您需要将数据结构包含的所有内容写入字节流,并能够从该字节流重新创建它。主要的复杂性在于避免由于数据结构中的循环而无限次地存储同一个节点。@JBNizet您能给我几行java代码吗?我无法找到解决方案,如何编写关于随机节点链接的信息。问题不要求您实现它。它要求您对其进行序列化和反序列化。它告诉您应该在不使用库/标准序列化工具的情况下执行测试。因此,您可能不使用Serializable和ObjectOutputStream。因为这些正是您可能不使用的标准序列化工具。您需要将数据结构包含的所有内容写入字节流,并能够从该字节流重新创建它。主要的复杂性在于避免由于数据结构中的循环而无限次地存储同一个节点。@JBNizet您能给我几行java代码吗?我无法找到解决方案,如何编写有关随机节点链接的信息。