将节点按顺序放入链表中
Putting nodes in linked list in order
所以我一生都无法做的是按照它们的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
不要只把新节点放在freelist
的末尾,而是检查以前的节点end_byte
与新节点start_byte
的比较,以及新节点end_byte
与下一个节点start_byte
的比较。这样,列表将保持排序,并且可以轻松组合连续内存区域的节点。
相关文章:
- 反向给定链表中的K节点
- 如何按数字顺序插入链表节点?
- 无法弄清楚如何使用 c++ 中的链表按从 a 到 z 的顺序显示字母
- C++ 双向链表 - 插入同时保持递增顺序
- 链表缺少节点并在打印时颠倒顺序
- 双链表中按字母顺序排序的链接
- 在 C++ 中使用链表按字母顺序对字符串进行排序
- 以相反的顺序打印链表的后半部分
- 按排序顺序将节点插入链表
- 将节点按顺序放入链表中
- 在c++中按字母顺序将节点添加到链表中
- C++链表-按排序顺序打印
- 我如何使用C ++以相反的顺序打印此单个链表中的元素
- 在链表中按顺序插入节点
- 按顺序遍历单个链表
- 按字母顺序对链表进行排序
- 在链表中,析构函数删除节点的顺序
- 字母链表顺序不对
- 使用无重复键的链表进行顺序搜索
- 比较链表,C++,相同的顺序却可以不同的抓取