我对DFS算法一点帮助。我在C中编写应用程序,找到给定图形中两个顶点之间的所有可能路径。
结果(在顶点1和6之间)采用以下格式/顺序:
1-5-6, 1-6, 1-7-6
但我的愿望是让它们按照这样的长度排序:
1-6, 1-5-6, 1-7-6
但我不知道如何对它们进行排序。现在每当我找到一条新路径时,我立即将其打印到控制台输出。我确信有办法,该怎么做。现在我找不到了,所以我在寻求帮助。
感谢您的回答。
修改
示例代码,我如何打印路径,我反向堆栈以正确的顺序。
Stack *reverse = stack_new();
/* copy data of stack */
Node *temp = path->head;
while(temp != NULL)
{
stack_push(reverse, temp->data);
temp = temp->next;
}
if(reverse->size >= 1)
{
printf("%d", stack_pop(reverse));
}
while(stack_empty(reverse) == 0)
{
printf("-%d", stack_pop(reverse));
}
printf(";");
free(reverse);