渭南华阴建设银行的网站是多少上海比较大的优化公司
图的深度优先遍历(类似树的先序遍历)
广度优先遍历(类似树的层次遍历)
树的孩子表示法(孩子链表法)
图的遍历时间复杂度O(m+n)或O(V^2)
邻接表表示时,查找所有顶点的邻接点所需时间为O(E),访问顶点的邻接点所花时间为O(V),此时,总的时间复杂度为O(V+E)。
邻接矩阵表示时,查找每个顶点的邻接点所需时间为O(V),要查找整个矩阵,故总的时间度为O(V^2)。
v为图的顶点数,E为边数。
#include<stdio.h>
#include <string.h>
#include<stdlib.h>//无向图的邻接表
#define Mv 100;//the max number of vertextypedef struct vn //顶点数组
{float price;arcn *next;//注意注意注意注意注意注意注意注意注意注意注意注意注意注意
} vn,adjlist[100];typedef struct arcn //边类型
{int 下一个端点;arcn *next;
} arcn;typedef struct //图的构成
{
adjlist v;
int vnum,arcnum;
} Gra;int creatG(Gra *G)//图的创建方法
{scanf("%d%d",&G->vnum,&G->arcnum);printf("图书信息:%d %d\n",G->vnum,G->arcnum);//定点数 边数for(int i=0;i<G->vnum;i++)//定点的初始化{G->v[i].price=i;G->v[i].next=NULL;}for(int j=0;j<G->arcnum;j++){int v1,v2;scanf("%d%d",v1,v2);//两端的序号arcn *p1= new arcn;//创造边节点p1->下一个端点=v1;//一端:下一个的编号,只是记录一个(位置的)值p1->next=(G->v[v2]).next;//另一端(G->v[v2]).next=p1;arcn *p2= new arcn;//创造边节点 无向图的对称性p2->下一个端点=v2;//一端:下一个的编号p2->next=(G->v[v1]).next;//另一端(G->v[v1]).next=p2;}int aaahhh;scanf("%d",aaahhh); //防止运行完一闪而过return 0;}int main(){ Gra G;int c= creatG(&G); return 0;}
#include<stdio.h>
#include <string.h>
#include<stdlib.h>//无向图的邻接表
#define Mv 100;//the max number of vertex
int visited[5]={0,0,0,0,0};
int shuru=0;typedef struct arcn //边类型
{int 下一个端点;arcn *next;
} arcn;
typedef struct vn //顶点数组
{float price;arcn *next;//注意注意注意注意注意注意注意注意注意注意注意注意注意注意
} vn,adjlist[100];typedef struct //图的构成
{
adjlist v;
int vnum,arcnum;
} Gra;int creatG(Gra *G)//图的创建方法
{printf("请输入顶点数 边数");scanf("%d%d",&G->vnum,&G->arcnum);printf("图书信息:%d %d\n",G->vnum,G->arcnum);//定点数 边数for(int i=0;i<G->vnum;i++)//定点的初始化{G->v[i].price=i*10;G->v[i].next=NULL;}for(int j=0;j<G->arcnum;j++){int v1=0;int v2=3;for(;shuru<6;shuru++){if(shuru==0){ v1=0; v2=3;};if(shuru==1){ v1=0; v2=1;};if(shuru==2){ v1=3; v2=2;};if(shuru==3){ v1=1; v2=2;};if(shuru==4){ v1=4; v2=2;};if(shuru==5){ v1=1; v2=4;};}printf("请输入两个端点的序号,例如 0 3");
// scanf("%d%d",v1,v2);//两端的序号arcn *p1= new arcn;//创造边节点p1->下一个端点=v1;//一端:下一个的编号,只是记录一个(位置的)值p1->next=(G->v[v2]).next;//另一端(G->v[v2]).next=p1;arcn *p2= new arcn;//创造边节点 无向图的对称性p2->下一个端点=v2;//一端:下一个的编号p2->next=(G->v[v1]).next;//另一端(G->v[v1]).next=p2;}return 0;}void DFS(Gra *G, int k)
{
//图G为邻接矩阵类型,从第v个便点出发深度优先搜索遍厉图。
printf("输出信息");
visited[k]=true;
arcn *p=G->v[k].next;while(p!=NULL)//边结点非空
{int w=p->下一个端点;
if(!visited[w])DFS(G,w);p=p->next;
}}int main(){ Gra G;int c= creatG(&G); int k=0;DFS( &G, k);int aaahhh=0;scanf("%d",aaahhh); //防止运行完一闪而过return 0;}