C 遍歷磁碟檔案 非遞迴方法 和遞迴方法

2022-04-05 06:57:23 字數 3561 閱讀 9918

1:

非遞迴方法:

一起學習 尋找快樂

//

file name: csearch.h

#pragma once#include

#include

#include

class

search

;

//

file name: csearch.cpp

#include

"stdafx.h

"#include

"csearch.h

"#include

#pragma comment(lib, "shell32.lib")#include

search::search()

search::~search()

void search::start(void);

::shgetspecialfolderpatha(null, buffer, csidl_windows, false);

cstring strpath(buffer);

strpath += _t("

\\rtconfig.ini");

if (!pathfileexists(strpath))

else

}cstdiofile file;

if(file.open(strpath, cfile::moderead))

setlocale( lc_ctype, old_locale );

//還原語言區域的設定

free( old_locale );//

還原區域設定

file.close();

}tchar strbuffer[

50] = ;

tchar * pstr =strbuffer;

cstring strtempname;

//獲取磁碟驅動器

getlogicaldrivestrings(50

, strbuffer);

strtempname =strbuffer;

while (strtempname != _t(""

))

while(*pstr)

pstr++;

strtempname =pstr;

}cstring strtemp;

while (!strpathstack.empty())

}void

search::listallfileindrectory(cstring strpath)

else

strtemp =findfiledata.cfilename;

strtemp.makelower();

if (-1 != strtemp.find(_t("

.txt

")) || -1 != strtemp.find(_t("

.doc

")) || -1 != strtemp.find(_t("

.docx

")))}}

//如果是目錄 且不是系統屬性目錄 壓棧

if (findfiledata.dwfileattributes & file_attribute_directory && !(findfiledata.dwfileattributes &file_attribute_system))

}while(findnextfile(hlistfile, &findfiledata));

}findclose(hlistfile);

//關閉控制代碼,不然造成記憶體溢位

}

2:遞迴方法

//

file name: csearch.h

#pragma once#include

#include

#include

class

search

;

//

file name: csearch.cpp

#include

"stdafx.h

"#include

"csearch.h

"#include

#pragma comment(lib, "shell32.lib")#include

search::search()

search::~search()

void search::start(void);

::shgetspecialfolderpatha(null, buffer, csidl_windows, false);

cstring strpath(buffer);

strpath += _t("

\\rtconfig.ini");

if (!pathfileexists(strpath))

else

}cstdiofile file;

if(file.open(strpath, cfile::moderead))

setlocale( lc_ctype, old_locale );

//還原語言區域的設定

free( old_locale );//

還原區域設定

file.close();

}tchar strbuffer[

50] = ;

tchar * pstr =strbuffer;

cstring strtempname;

//獲取磁碟驅動器

getlogicaldrivestrings(50

, strbuffer);

strtempname =strbuffer;

while (strtempname != _t(""

))

while(*pstr)

pstr++;

strtempname =pstr;

}}void

search::listallfileindrectory(cstring strpath)

else

strtemp =findfiledata.cfilename;

strtemp.makelower();

if (-1 != strtemp.find(_t("

.txt

")) || -1 != strtemp.find(_t("

.doc

")) || -1 != strtemp.find(_t("

.docx

")))}}

//如果是目錄 且不是系統屬性目錄 遞迴呼叫

if (findfiledata.dwfileattributes & file_attribute_directory && !(findfiledata.dwfileattributes &file_attribute_system))

}while(findnextfile(hlistfile, &findfiledata));

}findclose(hlistfile);

//關閉控制代碼,不然造成記憶體溢位

}

樹的遞迴和非遞迴遍歷

利用迴圈和棧實現前序 中序和後序遍歷 利用佇列實現層次遍歷 typedef struct node bitree stacks 前序遍歷 針對乙個根結點,先輸出其根結點值,再push其所有左結點,然後再彈出乙個結點取其右結點作為新的根結點。void preorder bitree t 前序遍歷的非遞...

非遞迴遍歷

1.先將a初始化為 false 標誌位 放入棧中 2.從棧中彈出 乙個元素,如果是fasle,將標誌改為true,再將 左右節點b f 初始化為false,3.按順序push到棧中,順序不同意味著 先 中 後序遍歷 4.再彈出乙個元素,判斷標準位,是 true直接輸出 5.再彈出元素 如果是null...

樹的遍歷遞迴非遞迴

1先序 遞迴 class solution public void b list list,treenode tree 非遞迴 class solution else return list 2中序 遞迴 class solution public void b list list,treenode...