成都网站建设设计

将想法与焦点和您一起共享

c语言函数的遍历 遍历字符串c语言

C语言的遍历算法

思路1:

创新互联建站于2013年开始,先为武山等服务建站,武山等地企业,进行企业商务咨询服务。为武山企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

写出所有24种4个数的排列,存到一个数组里,假如数组是P[24][4];

那么可以

for (i = 0; i 24; i++)

for (j = 0; j 24; j++)

for (k = 0; k 24; k++)

三层循环,P[i],P[j],P[k]分别是矩阵的三个列

思路2:

利用dfs递归枚举

int used[3][4];/*这个数组存放三个列中0~3这四个数是否已在这一列中出现过,需要提前清零*/

int mat[3][4];/*要枚举的矩阵*/

void dfs(int col, int row)/*col表示现在已经搜索到哪一列(从0开始编号),row表示这一列已经填了几行*/

{

int i;

if (col == 2 row == 4)

{

....../*运行到这里的时候,mat就是枚举到的一个矩阵*/

return;

}

if (row == 4)

{row = 0; col++;}

for (i = 0; i 4; i++)

if (!used[col][i])

{

used[col][i] = 1;

mat[col][row] = i;

dfs(col, row + 1);

used[col][i] = 0;

}

return;

}

调用的时候调用dfs(0,0)

c语言遍历是什么意思?

c语言遍历是指沿着某条搜索路线,依次对树(或图)中每个节点均做一次访问。访问结点所做的操作依赖于具体的应用问题, 具体的访问操作可能是检查节点的值、更新节点的值等。不同的遍历方式,其访问节点的顺序是不一样的。遍历是是c语言上进行其它运算之基础。

扩展资料:

由于从给定的某个节点出发,有多个可以前往的下一个节点,所以在顺序计算(即非并行计算)的情况下,只能推迟对某些节点的访问——即以某种方式保存起来以便稍后再访问。常见的做法是采用栈(LIFO)或队列(FIFO)。

由于树本身是一种自我引用(即递归定义)的数据结构,因此很自然也可以用递归方式,或者更准确地说,用corecursion,来实现延迟节点的保存。这时(采用递归的情况)这些节点被保存在call stack中。

C语言中的遍历是什么意思?

所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。

通俗一点说就是二叉树上每一个结点都被访问一次。分为先序、中序和后序遍历。

C语言遍历所有文件的函数!

#include stdio.h

#include dos.h

#include errno.h

#include io.h

#include dirent.h

#include dir.h

#include string.h

#include sys\stat.h

#include "pm03a.h"

void main(int argc,char* argv[])

{

//printf("Number %d\n",ConfirmFileAttrib(argv[1]));

GetDirectory(argv[1]);

printf("\nSearch Over.\n");

}

//------------------------------------------------------------------

//pm03a.h

//------------------------------------------------------------------

void GetDirectory(char *DirectoryName);

int ConfirmFileAttrib(char* filename);

char *GetCurrentPath();

char* GetFullFileName(char *filename);

char *WillDeleteFile(char *FileName);

//--------------------------------------------------------

//--------------- 获得文件属性 ---------------------------

//--------------------------------------------------------

int ConfirmFileAttrib(char* filename)

{

int temp=0;

int attrib=(_rtl_chmod(filename,0));

if(attrib==-1)

{

switch(errno)

{

case ENOENT:

//printf("%s Path or file not found.\n",filename);

temp=0;

break;

case EACCES:

//printf("Permission denied.\n");

temp=-1;

break;

default:

//printf("Error number: %d", errno);

temp=-2;

break;

}

}

else

{

if(attrib FA_RDONLY)

{

temp=1;

//printf("%s is read-only.\n", filename);

}

if(attrib FA_HIDDEN)

{

temp=2;

//printf("%s is hidden.\n", filename);

}

if(attrib FA_SYSTEM)

{

temp=3;

//printf("%s is a system file.\n", filename);

}

if(attrib FA_DIREC)

{

temp=4;

//printf("%s is a directory.\n", filename);

}

if (attrib FA_ARCH)

{

temp=5;

//printf("%s is an archive file.\n", filename);

}

}

return temp;

}

//--------------------------------------------------------

//--------------------------------------------------------

//--------------- 获取目录流 -----------------------------

//--------------------------------------------------------

void GetDirectory(char *DirectoryName)

{

DIR* Directory_Point;

struct dirent *entry;

bool DirControl;

if((Directory_Point=opendir(DirectoryName))==NULL)

{

printf("Error opening directory!\n");

return;

}

else

{

if(strcmp(DirectoryName,"..")==0)

{

return;

}

if(strcmp(DirectoryName,".")==0)

DirControl=true;

else

DirControl=false;

chdir(DirectoryName);

//char *filename=DirectoryName;

//int k=creat(strcat(filename,".txt"),S_IWRITE);

while(bool(entry=readdir(Directory_Point)))

{

if(ConfirmFileAttrib(entry-d_name)==5) // 确定为文件属性

{

// 文件过滤

WillDeleteFile(entry-d_name);

}

if(ConfirmFileAttrib(entry-d_name)==4) // 确定为目录属性

{

if(strcmpi(entry-d_name,"..")==0||strcmpi(entry-d_name,".")==0)

{

continue;

}

else

{

//printf("\n%s is direct\n\n",entry-d_name);

GetDirectory(entry-d_name);

}

}

}

if(!DirControl==true)

chdir("..");

closedir(Directory_Point);

}

}

//--------------------------------------------------------

//--------------------------------------------------------

//---------- 判断文件类型以备过滤 ------------------------

//--------------------------------------------------------

char* GetFullFileName(char *filename)

{

char *FullFilename=GetCurrentPath();

if(strlen(FullFilename)=3)

{

strcat(FullFilename,filename);

}

else

{

strcat(FullFilename,"\\");

strcat(FullFilename,filename);

}

return FullFilename;

}

char *GetCurrentPath()

{

char path[1024]="";

strcpy(path, "X:\\"); /* fill string with form of response: X:\ */

path[0] = 'A' + getdisk(); /* replace X with current drive letter */

getcurdir(0, path+3); /* fill rest of string with current directory */

return path;

}

char *WillDeleteFile(char *FileName)

{

int len;

for(len=strlen(FileName);len=0;len--)

{

if(FileName[len]=='.')

break;

}

char* Retname;

int s=-1;

for(int i=len;i=strlen(FileName);i++)

{

Retname[s+=1]=FileName[i];

}

int i=-1;

if(Retname[1]=='~')i=0;

if(strcmpi(Retname,".bak")==0)i=0;

if(strcmpi(Retname,".obj")==0)i=0;

if(strcmpi(Retname,".tds")==0)i=0;

if(strcmpi(Retname,".dcu")==0)i=0;

if(strcmpi(Retname,".tmp")==0)i=0;

if(strcmpi(Retname,".ilk")==0)i=0;

if(strcmpi(Retname,".pch")==0)i=0;

if(strcmpi(Retname,".pdb")==0)i=0;

if(strcmpi(Retname,".tlb")==0)i=0;

if(strcmpi(Retname,".idb")==0)i=0;

if(strcmpi(Retname,".pdb")==0)i=0;

if(strcmpi(Retname,".r$p")==0)i=0;

if(strcmpi(Retname,".OBR")==0)i=0;

if(strcmpi(Retname,".mbt")==0)i=0;

if(strcmpi(Retname,".mrt")==0)i=0;

if(strcmpi(Retname,".csm")==0)i=0;

if(i==0)

{

remove(GetFullFileName(FileName));

printf("%s delete\n",GetFullFileName(FileName));

}

return Retname;

}

c语言如何用函数指针利用循环结构遍历多个函数

#include stdio.h

#define TYPE int

// 下面是加减乘除 4 个函数

TYPE add(TYPE a, TYPE b){return a+b;}

TYPE sub(TYPE a, TYPE b){return a-b;}

TYPE muti(TYPE a, TYPE b){return a*b;}

TYPE div(TYPE a, TYPE b){return a/b;}

int main(int argc, char *argv[])

{

// 函数指针数组,一共有 4 四个元素,分别是:

// 加减乘除 4 个函数的函数指针

// 你可以自己再添加其他函数,而不用修改代码。

TYPE (*functions[])(TYPE, TYPE) = {add,sub,muti,div};

// 函数指针数组中的元素个数,这里是 4 个。

unsigned int n = sizeof(functions)/sizeof(functions[0]);

// 要进行运算的数字

TYPE a = 10, b = 5 , result;

int i=0;

for(i=0; in; i++)

{// 调用函数指针数组里面的所有函数。

result = functions[i](a,b);

printf("%d\n", result);

}

return 0;

}


文章名称:c语言函数的遍历 遍历字符串c语言
URL分享:http://chengdu.cdxwcx.cn/article/dosddhc.html