㈠ c語言 tree 結構問題
在這段代碼中,m_ItemList表示我們要展示的元素列表,m_ItemsCount表示元素列表中元素的個數,m_PageCount表示這些元素可以分成的總頁數,m_PageIndex表示頁數的索引默認從1開始。
其中GridItem是一個簡單的類,它有ItemName和ItemSprite兩個屬性,這里不再具體說明了。好了,現在我們來思考如何將這些元素和UI對應起來,因為列表中元素的數目不確定。
㈡ c語言中如何獲取樹中所有葉子節點的路徑
樹的遍歷是遞歸演算法哦。葉子節點的意思就是左右孩子都沒有,所以只要加上if(!(tree->leftchild)&&!(tree->right))判斷語句即可
㈢ DOS命令中 tree c:和tree c:\顯示結果不一樣
c:表示c:盤的當前目錄
c:\表示c:盤的根目錄
如果c:盤當前不是在根目錄,那二者是不一樣的
「\」一般情況是在盤符、路徑名、文件名之間起分隔作用的,直接在盤符後的「\」就是根目錄的意思
㈣ 如何用c語言列出目錄樹
給你一個參考:
相關函數:opendir
表頭文件:#include <ftw.h>
定義函數:int ftw(const char *dir, int (*fn) (const *file, const struct stat *sb, int flag), int depth)
函數說明:ftw() 會從參數dir指定的目錄開始,往下一層層地遞歸式遍歷子目錄。ftw()會傳三個參數給fn(), 第一個參數*file指向當時所在的目錄路徑,第二個參數是*sb, 為stat結構指針,第三個參數為旗標,有下面幾種可能值
FTW_F 一般文件
FTW_D 目錄
FTW_DNR 不可讀取的目錄,此目錄以下將不被遍歷
FTW_SL 符號連接
FTW_NS 無法取得stat結構數據,有可能是許可權問題
最後一個參數depth代表ftw()在進行遍歷目錄時同時打開的文件數。ftw()在遍歷時每一層目錄至少需要一個文件描述詞,如果遍歷時用完了depth所給予的限制數目,整個遍歷將因不斷地關文件和開文件操作而顯得緩慢
如果要結束ftw()的遍歷,fn()只需返回一非零值即可,此值同時也會是ftw()的返回值。否則ftw()會試著走完所有的目錄,然後返回0
返 回 值:遍歷中斷則返回fn()函數的返回值,全部遍歷則返回0,若有錯誤發生則返回-1
附加說明:由於ftw()會動態配置內存使用,請使用正常方式(fn函數返回非零值)來中斷遍歷,不要在fn函數中使用longjmp()
示例:
/*列出/etc/X11目錄下的子目錄*/
#include <sys/stat.h>
#include <unistd.h>
#include <ftw.h>
int fn(const char *file, const struct stat *sb, int flag)
{
if(flag == FTW_D)
printf("%s --- directory\n", file);
else
printf("%s \n",file);
return 0;
}
int main()
{
ftw("/etc/X11",fn,500);
}
㈤ 遍歷目錄,C語言,不用遞歸
C 調 DIR 命令
char cmd[] = "dir /ad /s /b";
system(cmd);
若想轉向到文件:DIR 命令 "dir /ad /s /b >> my_list.txt"
㈥ TREE——顯示磁碟目錄結構命令
path:是用來設置環境變數中的PATH變數.用起來比較方便,也可以用 set PATH=....來設定PATH變數的內容.path的內容很重要,不要隨便刪除,否則會造成某些程序運行不了.它保存了所有程序的默認搜索路徑,當運行一個可執行文件時,DOS會先在當前目錄中搜索該文件,若找到則運行之;若找不到該文件,則根據PATH命令所設置的路徑,順序逐條地到目錄中搜索該文件;用法:1.查看目前所設的路徑:path在我的系統中是這樣顯示的PATH=c:\Oracle\Ora81\bin;C:\Program Files\Oracle\jre\1.1.7\bin;C:\Program Files\
PC Connectivity Solution\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbe
m;c:\Oracle\Ora81\orb\bin;C:\Program Files\Microsoft SQL Server\80\Tools\BINN;C:
\Program Files\Common Files\Thunder Network\KanKan\Codecs;C:\Program Files\Storm
II\Codec;C:\Program Files\StormII 2.把路徑加到path中;path=c:\這時會把path以前的內容覆蓋了.path=%path%;c:\會把c:\追加到path的未尾 3.PATH ;(取消所有路徑)path好像只是臨時設置,重啟後會恢復到原來的設置,永久設置是用set path來設置的,自己實驗一下. tree就沒什麼好解釋的,就是顯示一個目錄的樹圖結構.例如:tree (顯示當前目錄)tree c:\(顯示C盤的目錄結構)
㈦ 用C語言編寫程序,創建一個二叉樹的二叉鏈表結構,然後輸出從根結點到所有葉子結點的路徑。
#include
#include
#include
typedef
struct
node
{
char
data;
struct
node
*lchild;
struct
node
*rchild;
}tnode;
tnode
*createtree()
{
tnode
*t;
char
ch;
ch=getchar();
if(ch=='0')
t=null;
else
{
t=(tnode
*)malloc(sizeof(tnode));
t->data=ch;
t->lchild=createtree();
t->rchild=createtree();
}
return
t;
}
void
listtree(tnode
*t)
{
if
(t!=null)
{
printf("%c",t->data);
if(t->lchild!=null||t->rchild!=null)
{
printf("(");
listtree(t->lchild);
if(t->rchild!=null)
printf(",");
listtree(t->rchild);
printf(")");
}
}
}
void
inorder(tnode
*t)
{
if(t!=null)
{
inorder(t->lchild);
printf("%c\t",t->data);
inorder(t->rchild);
}
}
void
leve(tnode
*t)
{
tnode
*quee[100];
int
front,rear;
front=-1;
rear=0;
quee[rear]=t;
while(front!=rear)
{
front++;
printf("%c\t",quee[front]->data);
if(quee[front]->lchild!=null)
{
rear++;
quee[rear]=quee[front]->lchild;
}
if(quee[front]->rchild!=null)
{
rear++;
quee[rear]=quee[front]->rchild;
}
}
}
main()
{
tnode
*t=null;
printf("請輸入二叉樹元素:");
t=createtree();
printf("廣義表的輸出:");
listtree(t);
printf("\n");
printf("二叉樹的中序遍歷:");
inorder(t);
printf("\n");
printf("二叉樹的層次遍歷:");
leve(t);
printf("\n");
system("pause");
}
/*
輸入:ab00cd00e00f000
輸出:a(b,c((d,e))
中序遍歷:
b
a
d
c
e
層次遍歷:a
b
c
d
e
*/
㈧ 如何用c語言實現linux裡面的tree指令
#include<stdio.h>
#include<dirent.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<string.h>
#defineMAXNAME200
voids_printf(char*filename,intdepth);
voids_dirwalk(char*dirname,intdepth,void(*fcn)(char*,int));
voidlistdirtree(char*dirname,intdepth);
intmain(intargc,char**argv)
{
if(argc==1)
listdirtree(".",0);
else
{
printf("%s ",argv[1]);
listdirtree(*++argv,0);
}
return0;
}
voidlistdirtree(char*dirname,intdepth)
{
structstatstbuf;
if((stat(dirname,&stbuf))==-1)
{
fprintf(stderr,"listdirtree:can'treadfile%sinformation! ",dirname);
return;
}
if((stbuf.st_mode&S_IFMT)==S_IFDIR)
s_dirwalk(dirname,depth,listdirtree);
}
voids_dirwalk(char*dirname,intdepth,void(*fcn)(char*,int))
{
charname[MAXNAME];
structdirent*fip;
DIR*dp;
if((dp=opendir(dirname))==NULL)
{
fprintf(stderr,"s_dirwalk:can'topen%s ",dirname);
return;
}
while((fip=readdir(dp))!=NULL)
{
if(strcmp(fip->d_name,".")==0||strcmp(fip->d_name,"..")==0)/*skipdirectory'.'and'..'*/
continue;
if(strlen(dirname)+strlen(fip->d_name)+2>sizeof(name))
{
fprintf(stderr,"s_dirwalk:%s/%sistoolong! ",dirname,fip->d_name);
return;
}
else
{
s_printf(fip->d_name,depth);
sprintf(name,"%s/%s",dirname,fip->d_name);
(*fcn)(name,depth+1);
}
}
closedir(dp);
}
voids_printf(char*filename,intdepth)
{
while(depth-->0)
printf("|");
printf("|--");
printf("%s ",filename);
}