邻接表法存储图c语言代码,邻接表存储图,DFS遍历图的java代码实现

d2cb2a918f51448624203586ccfd5995.png

import java.util.*;

public class Main{

static int MAX_VERTEXNUM = 100;

static int [] visited = new int[MAX_VERTEXNUM];

public static void main(String [] args){

Graph G = new Graph();

creatGraph(G);

output(G);

for(int i=0;i

visited[i]=0;

System.out.println("DFS遍历的结果是:");

dfs(G,0);//从G.node_list[0]开始DFS遍历

}

static void creatGraph(Graph G){

Scanner in = new Scanner(System.in);

System.out.println("请输入顶点数v和边数e,(v e):");

G.vertex_num = in.nextInt();

G.edge_num= in.nextInt();

System.out.println("请输入各顶点信息:");

for(int i=0;i

G.node_list[i] = new VertexNode();

G.node_list[i].date = in.next();

G.node_list[i].first_edge = null; //很重要

}

System.out.println("请输入各边信息(以空格隔开):");

for(int i=0;i

EdgeNode p = new EdgeNode();

String str1 = in.next();

String str2 = in.next();

int v1 = locateVex(G,str1);

int v2 = locateVex(G,str2);

p.vertex = v1;

p.next = G.node_list[v2].first_edge;

G.node_list[v2].first_edge = p;

EdgeNode q = new EdgeNode();//如果是有向图,则不存在下面的代码(上面的代码的存储顺序可能有变化)

q.vertex = v2;

q.next = G.node_list[v1].first_edge;

G.node_list[v1].first_edge = q;

}

}

static int locateVex(Graph G,String s){

for(int i=0;i

if(G.node_list[i].date.equals(s))

return i;

}

return -1;

}

static void output(Graph G){

System.out.println("输出邻接表存储情况:");

EdgeNode p = new EdgeNode();

for(int i=0;i

System.out.print(G.node_list[i].date);

p = G.node_list[i].first_edge;

while(p!=null){

System.out.print("->"+G.node_list[p.vertex].date);

p = p.next;

}

System.out.println();

}

}

static void dfs(Graph G,int k){

System.out.println(G.node_list[k].date);

visited[k]=1;

EdgeNode p = new EdgeNode();

p = G.node_list[k].first_edge;

while(p!=null){

if(visited[p.vertex]!=1)

dfs(G,p.vertex);

p = p.next;

}

}

}

//顶点存储

class VertexNode{

String date;

EdgeNode first_edge = new EdgeNode();

}

//边存储

class EdgeNode{

int vertex;

EdgeNode next;

}

//图存储

class Graph{

VertexNode [] node_list = new VertexNode[100];

int vertex_num,edge_num;

}

//输出结果:注意:(邻接表的保存顺序与输入边的顺序有关)

433902c859854b5e6e009cd929be1835.png

数据结构(11) -- 邻接表存储图的DFS和BFS

/// //图的邻接表表示法以及DFS和BFS ...

PTA 邻接表存储图的广度优先遍历(20 分)

6-2 邻接表存储图的广度优先遍历(20 分) 试实现邻接表存储图的广度优先遍历. 函数接口定义: void BFS ( LGraph Graph, Vertex S, void (*Visit)(V ...

PTA 邻接表存储图的广度优先遍历

试实现邻接表存储图的广度优先遍历. 函数接口定义: void BFS ( LGraph Graph, Vertex S, void (*Visit)(Vertex) ) 其中LGraph是邻接表存储的 ...

数据结构之---C语言实现图的邻接表存储表示

// 图的数组(邻接矩阵)存储表示 #include #include #include #defi ...

图的邻接表存储表示(C)

//---------图的邻接表存储表示------- #include #include #define MAX_VERTEXT_NUM ...

图的邻接表存储 c实现

图的邻接表存储 c实现 (转载) 用到的数据结构是 一个是顶点表,包括顶点和指向下一个邻接点的指针 一个是边表, 数据结构跟顶点不同,存储的是顶点的序号,和指向下一个的指针 刚开始的时候把顶点表初始化 ...

c++ 由无向图构造邻接表,实现深度优先遍历、广度优先遍历。

/* 首先,根据用户输入的顶点总数和边数,构造无向图,然后以用户输入的顶点 为起始点,进行深度优先.广度优先搜索遍历,并输出遍历的结果. */ #include #i ...

SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历

数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Descript ...

DS实验题 Old_Driver UnionFindSet结构 指针实现邻接表存储

题目见前文:DS实验题 Old_Driver UnionFindSet结构 这里使用邻接表存储敌人之间的关系,邻接表用指针实现: // // main.cpp // Old_Driver3 // // ...

随机推荐

requerjs 合并 优化配置

/* * This is an example build file that demonstrates how to use the build system for * require.js. * ...

在IIS服务器上部署svg/woff/woff2字体

在url没错的前提下,字体文件报404错误,如.woff,.woff2 出错原因: IIS不认SVG,WOFF/WOFF2这几个文件类型 解决方案: 在IIS服务器上部署svg/woff/woff2字 ...

JQuery 定时器 (Jquery Timer 插件)

jQuery Timers插件地址: http://plugins.jquery.com/project/timers JQuery Timers应用知识提供了三个函式1. everyTime(时 ...

Dijkstra算法亲自实践

按路径长度递增次序产生算法: 把顶点集合V分成两组: (1)S:已求出的顶点的集合(初始时只含有源点V0) (2)V-S=T:尚未确定的顶点集合 将T中顶点按递增的次序加入到S中,保证: (1)从源点 ...

CSU 1552: Friends 图论匹配+超级大素数判定

1552: Friends Time Limit: 3 Sec  Memory Limit: 256 MBSubmit: 163  Solved: 34[Submit][Status][Web Boa ...

BZOJ 1620: [Usaco2008 Nov]Time Management 时间管理

Description Ever the maturing businessman, Farmer John realizes that he must manage his time effecti ...

移动周报:十款最实用的Android UI设计工具

上一周可以说是一个不断Mark周,从最实用的Android UI设计工具.免费移动应用测试框架推荐,到HTML5开发框架等等,各种开发工具.框架精彩丰呈,看得小伙伴们是不亦乐乎.当然,还有不容错过的M ...

Volist标签 key值的使用

Volist标签是thinkphp框架view中常用到的一个标签.主要用于在模板中循环输出数据集或者多维数组.今天使用key属性时出了点问题,记录一下. volist标签(循环输出数据) 闭合 非闭合 ...

HTML学习(七)表格

表格表格由

标签定义).字母 td 指表格数据(ta ...

无法访问 ASP 兼容性模式

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值