㈠ 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);
}