java数据结构----图的基本操作

java数据结构----图的基本操作

 实验四、图的基本操作

一、实验目的

1、熟练掌握图的邻接矩阵和邻接表存储结构;

2、掌握图的创建方法;

3、掌握求顶点度的方法;

4、掌握图的深度优先和广度优先遍历方法;

二、实验内容

1、分别定义图的邻接矩阵和邻接表存储结构;

2、分别在两种存储结构下根据输入的顶点和边(或弧)创建图;

3、分别在两种存储结构下实现求顶点度的操作;

3、分别在两种存储结构下实现图的深度和广度优先遍历算法。

三、实验环境

eclipse环境

四、实验步骤

1、定义图的存储结构

2、实现图的创建方法,并创建一个如下的图:


3、实现求第一个邻接点firstAdjVex()和下一个邻接点nextAdjVex()的操作;

4、写一个算法,求各个顶点的度;

5、对创建的图进行深度优先和广度优先遍历。

五、问题讨论

1、图的邻接矩阵和邻接表的存储结构各有什么特点?

2、对于稀疏图和稠密图分别选择邻接矩阵和邻接表中的哪个存储更合适?

六、实验报告内容

1、实验目的

2、实验内容和具体要求

3、完成情况和实验记录,实验记录为实验过程中遇到的问题及解决方法

4、程序清单

5、所输入的数据及相应的运行结果

6、问题讨论回答

7、实验心得



pre:图分两种存储结构,矩阵存储和链式存储,此处矩阵存储较易(老师说真正的矩阵存储很难),链式稍难,与树类似(存储时用到链式结构)。

code:

邻接矩阵存储法:

package DSexp4;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class GraphByMatrix {

	int size;
	boolean g[][]=new boolean[100][100],vis[]=new boolean[100];
	int id[]=new int[100],od[]=new int[100];
	Queueq=new LinkedList();
//	Anytype[]vertex=(Anytype[])new Comparable[100];
	Vertex vv[];
	public GraphByMatrix(int s,Anytype v[],boolean g[][]){
		this.size=s;
		vv=new Vertex[1000];
		for(int i=0;i(v[i]);
		}
		for(int i=0;i gbm=new GraphByMatrix(n,v,g);
		System.out.println("ŽËÍŒ¹²ÓÐ"+n+"žöœáµã");
		System.out.println("œÚµãÄÚÈÝΪ£º");
		String s="";
		for(int i=0;i{
	Anytype data;
	public Vertex(Anytype d){
		this.data=d;
	}
}
/*
4
1 5 7 9
1 0 0 0
0 0 1 0
1 1 0 1
0 0 0 0
*/


邻接链表存储法:
package DSexp4;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class GraphByList {
	VertexL v[]=new VertexL[100];
	int size;
	Queueq=new LinkedList();
	public GraphByList(int s,Anytype v[],boolean g[][]){
		this.size=s;
		for(int i=0;i gbl=new GraphByList(n,v,g);
		System.out.println("此图有"+n+"个节点");
		System.out.println("分别是:");
		String s="";
		for(int i=0;i{
	Anytype data;
	Arc firstArc;
	int indegree,outdegree;
	boolean vis;
	public VertexL(Anytype d){
		this.data=d;
	}
}
class Arc{
	int vex;
	Arc nextArc;
	public Arc(int v){
		vex=v;
	}
	public Arc(){
		super();
	}
}
PS:再难也不怕,其实心得才是最难的……






你可能感兴趣的:(语言/理论,数据结构,实验)