假设我在MIPS32中有一个链表,在某些时候我想删除其中一个节点。 我这样做是为了使前任节点指向被删除的节点的下一个节点。 但是,删除的节点仍包含一些数据。所以问题是如何确定该节点是否可以在将来使用?
一个建议是创建一个包含所有可用节点的第二个链表。但是,我将如何实施这样的清单?另外,您是否认为此列表应指向内存中的所有可用空间或仅指向已删除节点之一?
还有其他更好的方法可以达到相同的效果吗?
解决方案:
每当我们“询问”新内存时,我们都会使用syscall来使用sbrk服务。但是,如果我们从数据结构中删除了某些内容,我们可能希望使用已删除的内存部分。
因此,解决方案可能是拥有一个可以重复使用的节点链表。每当我们从数据结构中删除某些内容时,我们会将内存部分(即一个节点)添加到链接列表中,以跟踪可重用的内存。
因此,当我们要在数据结构中添加内容时,我们首先检查“内存链表”中是否存在一些可重用的节点。如果不是这种情况,我们可以像往常一样使用sbrk。
答案 0 :(得分:0)
每当我们“询问”新内存时,我们都会使用syscall来使用sbrk服务。但是,如果我们从数据结构中删除了某些内容,我们可能希望使用已删除的内存部分。
因此,解决方案可能是拥有一个可以重复使用的节点链表。每当我们从数据结构中删除某些内容时,我们会将内存部分(即一个节点)添加到链接列表中,以跟踪可重用的内存。
因此,当我们要在数据结构中添加内容时,我们首先检查“内存链表”中是否存在一些可重用的节点。如果不是这种情况,我们可以像往常一样使用sbrk。