怎么用广度优先算法也就是队列实现文件夹的遍历

如何用广度优先算法也就是队列实现文件夹的遍历?
如题:
1.现在需要检索一个文件夹,文件夹里面的子目录有20多W   文件有6W之多。
2.由于文件夹的宽度大,所以适合用广度优先来提高效率。
3.需要用纯C实现!
4.需要有人能提高答案。
谢谢!
算法 遍历 广度优先

------解决方案--------------------
网上一搜大把的。
------解决方案--------------------
广度优先你需要一个队列结构。

1. 把根文件夹路径放入队列。
2. 从队列中取出一个文件夹路径,获得这个目录下的文件夹和文件列表。
3. 文件夹列表中的文件夹路径一一放入队列。
4. 一一处理文件列表。
5. 如果队列为空,则结束,如果队列不为空,转到第二条。
------解决方案--------------------
是文件夹,就push进队列
是文件,就处理
循环完毕,从队列中pop一个出来,继续。
队列空,完毕。
------解决方案--------------------
system("dir /b /a-d c:\\*.* >d:\\allfiles.txt");
//读文件d:\\allfiles.txt的内容即C:\\下所有文件的名字
system("dir /b /a-d /s c:\\*.* >d:\\allfilesinsub.txt");
//读文件d:\\allfilesinsub.txt的内容即C:\\下所有文件的名字包含子目录
system("dir /b /ad  c:\\*.* >d:\\alldirs.txt");
//读文件d:\\alldirs.txt的内容即C:\\下所有子目录的名字
请记住,能用shell命令获取文件、文件夹信息或者操作文件、文件夹最好用shell命令获取或者操作,而不要用各种API获取或者操作,因为当遇到非法文件夹名或非法文件名或非法文件长度、非法文件日期、压缩文件、链接文件、稀疏文件……等各种意料之外的情况时,API会处理的不全面或陷入死循环,而shell命令不会。

------解决方案--------------------
一个队列就搞定的广度搜索啊。
------解决方案--------------------
这是我写的一段代码,相互学习。


#include <windows.h>
#include <stdio.h>

/*A simple queue*/
#define SIZE 256
struct queue
{
char data[SIZE][SIZE];
int head_index;
int tail_index;
int size;
};
typedef struct queue Queue;

Queue q;
void init_queue(Queue *q)
{
q->head_index = 0;
q->tail_index = 0;
q->size = 0;
}

int enter_queue(Queue *q, char *dir)
{
if (q->size == SIZE - 1)
return -1;
q->tail_index ++;
q->size ++;
strncpy(q->data[q->tail_index], dir, SIZE);
return 0;