- Ordenació alfabètica dels actors de cada habitació per als arxius i l'editor

This commit is contained in:
2024-09-17 20:02:25 +02:00
parent 1d255b70e0
commit f1f37d7801
3 changed files with 56 additions and 2 deletions

View File

@@ -281,6 +281,57 @@ namespace actor
return "NONE";
}
actor_t *alpha = nullptr;
const bool a_is_greater_than_b(actor_t *a, actor_t *b)
{
return strcmp(a->name, b->name) >= 0;
}
void order(actor_t *act)
{
if (!act) return;
if (!a_is_greater_than_b(act, alpha))
{
act->next_alpha = alpha;
alpha = act;
}
else
{
actor_t *other = alpha;
actor_t *prev = nullptr;
while (a_is_greater_than_b(act, other))
{
if (other->next_alpha)
{
prev = other;
other = other->next_alpha;
}
else
{
other->next_alpha = act;
return;
}
}
prev->next_alpha = act;
act->next_alpha = other;
}
}
actor_t *alphaOrder(actor_t *act)
{
if (!act) return nullptr;
alpha = act;
act->next_alpha = nullptr;
act = act->next;
while (act)
{
act->next_alpha = nullptr;
order(act);
act = act->next;
}
return alpha;
}
void saveToFile(FILE *f, actor_t *act)
{
fprintf(f, "\nactor{\n");