【发布时间】:2014-03-12 02:15:04
【问题描述】:
所以我这辈子没能做的就是将这个新节点按startbyte 和endbytes 的顺序放入链表中。然后我需要它来查看节点是否彼此相邻,以及它们是否相邻。把它们变成一个大节点。
这是我的一些代码,用于从第一个列表中释放内存,但在创建新节点后,我无法找到可行的方法,我尝试了多种不同的方法。
void release_memory(const int job)
{
ALLOCPTR t = alloclist;
FREEPTR f = freelist;
ALLOCPTR prev = alloclist;
while(t!=NULL)
{
if(t->id == job )
{
if(t==alloclist)
{
alloclist=alloclist->next;
}
else
{
prev->next = t->next;
}
FREEPTR newfreenode = new FREE_NODE;
newfreenode->start_byte = t->start_byte;
newfreenode->end_byte = t->end_byte;
newfreenode->size = t->size;
while(f->next!=NULL)
{
f=f->next;//
}
f->next = newfreenode;
checkIfFreeTogether();
}
prev=t;
t=t->next;
}
我需要做的一个例子是这个
before any memory freeing
JOB MEMORY
1 1-49
2 50-99
3 100-199
After freeing 2 and 3
job memory
1 1-49
FREE 50-99
FREE 100-199
After creating one big free node out of the two
job memory
1 1-49
FREE 50-199
【问题讨论】:
-
你能举例说明你想要达到的目标吗?我知道您正在尝试对列表的节点和 MSB、LSB 或节点值的所有字节做一些事情。但不知道是什么...
-
如果
freelist是NULL怎么办?
标签: c++ linked-list insertion