怎样用非递归的算法来遍历目录和子目录?该如何处理

怎样用非递归的算法来遍历目录和子目录?
用递归算法来遍历目录太占内存了,谁有用非递归的算法来遍历目录和子目录呢??

而且不要用MFC,STL那些类库,只要是仅仅win32的,谁有这样的代码?

------解决方案--------------------
递归函数设计好不会, 非递归就是用循环, 代码量比较大

只用win32, 那直接用数组, 查找用API: FindFirstFile...

不明白楼主为什么有这些要求?
------解决方案--------------------
压栈,然后顺次弹出
------解决方案--------------------
要节省内存还是要用递归的方法,因为只用保存从根到叶子这一条分支的内容。
否则你要是用深度优先或者广度优先,那要保存的就多了。
------解决方案--------------------
文件夹遍历最好不要用递归. 性能差且目录层次过深时有可能造成程序溢出空间栈.

如果想逐层遍历, 可使用队列. 使用下面的算法:

0. 顶层文件夹入队列
1. 若队列为空, 则退出; 
2. 出队一个节点, 用SetCurrentDirectroy将文件夹置为当前目录
3. hff=FindFirstFile(TEXT(*.*), &wfd);
if(INVALID_HANDLE_VALUE!=hff)
do
{
if(wfd.dwFileAttribute&FILE_ATTRIBUTE_DIRECTORY)
{
生成一个全路径的字符串,并入队列 //此处可以优化
}else
输出
}while(rc=FindNextFile(hff, &wfd);
FindClose(hff);
4. 返回1



------解决方案--------------------
非递归总体上性能比较好。递归的时候也需要保存很多东西,返回地址,寄存器,局部变量等等,都要保存在栈中,层次太深,容易溢出。最不利的是需要同时打开很多handle,而且还不清楚find_first_of等等是否也支持允许嵌套,而SetCurrentDirectroy更是需要每次手动恢复。