C++ C++;链表报表功能
我创建了一个内存管理器程序,它使用链表中的节点,链表存储节点的作业编号以及节点使用的内存的开始和结束字节 我在想办法让我的C++ C++;链表报表功能,c++,linked-list,C++,Linked List,我创建了一个内存管理器程序,它使用链表中的节点,链表存储节点的作业编号以及节点使用的内存的开始和结束字节 我在想办法让我的报告作业功能正常工作时遇到了困难。我希望输出像这样 JOB Memory Usage 1 10 – 50 54 – 75 200 – 240 5 1 – 9 101 – 134 3 180 – 184 185 – 192 由于多个节点可能具有相同的作业,我很难确定如何循环执行此操作,以便它只
报告作业
功能正常工作时遇到了困难。我希望输出像这样
JOB Memory Usage
1 10 – 50 54 – 75 200 – 240
5 1 – 9 101 – 134
3 180 – 184 185 – 192
由于多个节点可能具有相同的作业,我很难确定如何循环执行此操作,以便它只打印一次作业,但要遍历所有节点,查看它是否具有该作业编号,然后打印开始和结束字节
这是我正在处理的一些示例代码,我肯定我把事情复杂化了,我只需要用一种更简单的方式来理解它
void report_jobs(void)
{
ALLOCPTR t = alloclist;
ALLOCPTR m = alloclist;
int numberofnodes = 0;
int job = 0;
while(m!=NULL)
{
jobb++;
while(t!=NULL)
{
if(t->id == job)
{
cout << t->id << t-> start_byte << t-> end_byte << endl;
}
t = t->next;
}
m = m->next
}
void报告\u作业(void)
{
ALLOCPTR t=alloclist;
ALLOCPTR m=alloclist;
int numberofnodes=0;
int job=0;
while(m!=NULL)
{
jobb++;
while(t!=NULL)
{
如果(t->id==作业)
{
cout id start\u byte end\u byte next;
}
m=m->next
}
您可能想做的是,我们使用一个哈希表或索引表键入作业id,并在迭代列表时用开始和结束字节信息填充该条目
然后,在表上再次传递以生成输出
for (i in alloclist) {
table[i->id].populate(i->start_byte, i->end_byte);
}
for (j in table) {
std::cout << table[j];
}
for(alloclist中的i){
表[i->id]。填充(i->开始字节,i->结束字节);
}
对于(表中的j){
std::为什么不把这些信息放在一个dict中并输出呢?这并不是很简单。你需要聚合(排序?)与作业相关的地址范围。根据您期望的用例,您需要一些隐藏的东西才能正常运行。例如,如果您需要使用的作业ID的边界较低,您可以创建一个包含起始字节和结束字节的结构,并创建此结构的链接列表的适当长的向量e来组织数据。如果作业ID变得疯狂,您可以使用该结构的链接列表的散列。