遍历c语言编程,遍历数组c语言

本文目录一览:

用C语言编程实现图的遍历算法

图的遍历是指按某条搜索路径访问图中每个结点,使得每个结点均被访问一次,而且仅被访问一次。图的遍历有深度遍历算法和广度遍历算法,最近阿杰做了关于图的遍历的算法,下面是图的遍历深度优先的算法(C语言程序):

#includestdio.h

#includemalloc.h

#define MaxVertexNum 5

#define m 5

#define TRUE 1

#define NULL 0

typedef struct node

{

int adjvex;

struct node *next;

}JD;

typedef struct EdgeNode

{

int vexdata;

JD *firstarc;

}TD;

typedef struct

{

TD ag[m];

int n;

}ALGRAPH;

void DFS(ALGRAPH *G,int i)

{

JD *p;

int visited[80];

printf(“visit vertex:%d-“,G-ag[i].vexdata);

visited[i]=1;

p=G-ag[i].firstarc;

while(p)

{

if (!visited[p-adjvex])

DFS(G,p-adjvex);

p=p-next;

}

}

void creat(ALGRAPH *G)

{

int i,m1,j;

JD *p,*p1;

printf(“please input the number of graph\n”);

scanf(“%d”,G-n);

for(i=0;iG-n;i++)

{

printf(“please input the info of node %d”,i);

scanf(“%d”,G-ag[i].vexdata);

printf(“please input the number of arcs which adj to %d”,i);

scanf(“%d”,m1);

printf(“please input the adjvex position of the first arc\n”);

p=(JD *)malloc(sizeof(JD));

scanf(“%d”,p-adjvex);

p-next=NULL;

G-ag[i].firstarc=p;

p1=p;

for(j=2 ;j=m1;j++)

{

printf(“please input the position of the next arc vexdata\n”);

p=(JD *)malloc(sizeof(JD));

scanf(“%d”,p-adjvex);

p-next=NULL;

p1-next=p;

p1=p;

}

}

}

int visited[MaxVertexNum];

void DFSTraverse(ALGRAPH *G)

{

int i;

for(i=0;iG-n;i++)

visited[i]=0;

for(i=0;iG-n;i++)

if(!visited[i])

DFS(G,i);

}

int main()

{

ALGRAPH *G;

printf(“下面以临接表存储一个图;\n”);

creat(G);

printf(“下面以深度优先遍历该图 \n”);

DFSTraverse(G);

getchar();

}

C语言的遍历算法

思路1:

写出所有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语言遍历文件啊?

#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语言编程 图的创建与遍历

在C语言编程中,图的创建和遍历:

#includestdio.h

#define N 20

#define TRUE 1

#define FALSE 0

int visited[N];  

typedef struct    /*队列的定义*/

{

int data[N];

int front,rear;

}queue;

typedef struct    /*图的邻接矩阵*/

{

int vexnum,arcnum;

char vexs[N];

int arcs[N][N];

}

graph;

void createGraph(graph *g);  /*建立一个无向图的邻接矩阵*/

void dfs(int i,graph *g);    /*从第i个顶点出发深度优先搜索*/

void tdfs(graph *g);          /*深度优先搜索整个图*/

void bfs(int k,graph *g);    /*从第k个顶点广度优先搜索*/

void tbfs(graph *g);          /*广度优先搜索整个图*/

void init_visit();            /*初始化访问标识数组*/

void createGraph(graph *g)   /*建立一个无向图的邻接矩阵*/

{   int i,j;

char v;

g-vexnum=0;

g-arcnum=0;

i=0;

printf(“输入顶点序列(以#结束):

“);

while((v=getchar())!=’#’)

{

g-vexs[i]=v;        /*读入顶点信息*/

i++;

}

g-vexnum=i;             /*顶点数目*/

for(i=0;ig-vexnum;i++) /*邻接矩阵初始化*/

for(j=0;jg-vexnum;j++)

g-arcs[i][j]=0;

printf(“输入边的信息:

“);

scanf(“%d,%d”,i,j);  /*读入边i,j*/

while(i!=-1)              /*读入i,j为-1时结束*/

{

g-arcs[i][j]=1;

g-arcs[j][i]=1;

scanf(“%d,%d”,i,j);

}

}

void dfs(int i,graph *g) /*从第i个顶点出发深度优先搜索*/

{

int j;

printf(“%c”,g-vexs[i]);

visited[i]=TRUE;

for(j=0;jg-vexnum;j++)

if((g-arcs[i][j]==1)(!visited[j]))

dfs(j,g);

}

void tdfs(graph *g)      /*深度优先搜索整个图*/

{

int i;

printf(“

从顶点%C开始深度优先搜索序列:”,g-vexs[0]);

for(i=0;ig-vexnum;i++)

if(visited[i]!=TRUE)

dfs(i,g);

}

void bfs(int k,graph *g)  /*从第k个顶点广度优先搜索*/

{

int i,j;

queue qlist,*q;

q=qlist;

q-rear=0;

q-front=0;

printf(“%c”,g-vexs[k]);

visited[k]=TRUE;

q-data[q-rear]=k;

q-rear=(q-rear+1)%N;

while(q-rear!=q-front)

{

i=q-data[q-front];

q-front=(q-front+1)%N;

for(j=0;jg-vexnum;j++)

if((g-arcs[i][j]==1)(!visited[j]))

{

printf(“%c”,g-vexs[j]);

visited[j]=TRUE;

q-data[q-rear]=j;

q-rear=(q-rear+1)%N;

}

}

}

void tbfs(graph *g) /*广度优先搜索整个图*/

{

int i;

printf(“

从顶点%C开始广度优先搜索序列:”,g-vexs[0]);

for(i=0;ig-vexnum;i++)

if(visited[i]!=TRUE)

bfs(i,g);

printf(“

“);

}

void init_visit()   /*初始化访问标识数组*/

{

int i;

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

visited[i]=FALSE;

}

int main()

{

graph ga;

int i,j;

createGraph(ga);

printf(“无向图的邻接矩阵:

“);

for(i=0;iga.vexnum;i++)

{

for(j=0;jga.vexnum;j++)

printf(“%3d”,ga.arcs[i][j]);

printf(“

“);

}

init_visit();

tdfs(ga);

init_visit();

tbfs(ga);

return 0;

}

C语言编程,顾名思义,就是用C语言来进行计算机编程工作。

C语言是国际上广泛流行的,很有发展前途的计算机高级语言.它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件.

C语言是一种引用广泛,并且实现灵活的一种计算机编程语言,用C语言编出来的程序,可以在很多平台上运行,可移植性强。具体的C语言编程内容请参加C或者C++等。

原创文章,作者:AWCO,如若转载,请注明出处:https://www.506064.com/n/139274.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
AWCOAWCO
上一篇 2024-10-04 00:22
下一篇 2024-10-04 00:22

相关推荐

  • Python导入数组

    本文将为您详细阐述Python导入数组的方法、优势、适用场景等方面,并附上代码示例。 一、numpy库的使用 numpy是Python中一个强大的数学库,其中提供了非常丰富的数学函…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • Python返回数组:一次性搞定多种数据类型

    Python是一种多用途的高级编程语言,具有高效性和易读性的特点,因此被广泛应用于数据科学、机器学习、Web开发、游戏开发等各个领域。其中,Python返回数组也是一项非常强大的功…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python遍历集合中的元素

    本文将从多个方面详细阐述Python遍历集合中的元素方法。 一、for循环遍历集合 Python中,使用for循环可以遍历集合中的每个元素,代码如下: my_set = {1, 2…

    编程 2025-04-29
  • Python去掉数组的中括号

    在Python中,被中括号包裹的数据结构是列表,列表是Python中非常常见的数据类型之一。但是,有些时候我们需要将列表展开成一维的数组,并且去掉中括号。本文将为大家详细介绍如何用…

    编程 2025-04-29
  • Python操作数组

    本文将从多个方面详细介绍如何使用Python操作5个数组成的列表。 一、数组的定义 数组是一种用于存储相同类型数据的数据结构。Python中的数组是通过列表来实现的,列表中可以存放…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • Python如何遍历字典中的key和value

    本文将详细讲解Python中如何遍历字典中的key和value,包括多种遍历方式以及在遍历过程中的一些应用场景。 一、遍历字典中的key和value 在Python中,字典是一种无…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29

发表回复

登录后才能评论