假设我在MIPS32中有一个链表,并且在某个时候我想删除其中一个节点。我这样做是为了使前一个节点指向节点的下一个节点被移除。但是,删除的节点仍然包含一些数据。因此,问题是如何确定该节点在未来是否可用?
一种建议是创建包含所有可用节点的第二个链接列表。然而,我将如何执行这样的清单呢?另外,您认为这个列表应该指向内存中的所有可用空间还是仅指向已删除的节点之一?
还有其他更好的方法来实现同样的结果吗?
溶液
每当我们“请求”新内存时,我们就使用syscall使用sbrk服务。但是,如果我们已经从数据结构中删除了某些内容,我们可能需要使用删除的部分内存。
因此,解决方案可以是有一个可以重复使用的节点链接列表。每当我们从数据结构中删除某些内容时,我们就会将内存的一部分(即节点)添加到保持可重用内存跟踪的链接列表中。
因此,当我们必须在数据结构中添加某些内容时,我们首先检查“内存链接列表”中是否有一些可重用的节点。如果不是这样的话,我们可以像往常一样使用sbrk。
发布于 2012-10-04 20:24:55
每当我们“请求”新内存时,我们就使用syscall使用sbrk服务。但是,如果我们已经从数据结构中删除了某些内容,我们可能需要使用删除的部分内存。
因此,解决方案可以是有一个可以重复使用的节点链接列表。每当我们从数据结构中删除某些内容时,我们就会将内存的一部分(即节点)添加到保持可重用内存跟踪的链接列表中。
因此,当我们必须在数据结构中添加某些内容时,我们首先检查“内存链接列表”中是否有一些可重用的节点。如果不是这样的话,我们可以像往常一样使用sbrk。
https://stackoverflow.com/questions/9506178
复制相似问题