• 大小: 3KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-09
  • 语言: Java
  • 标签: 数据结构    

资源简介

数据结构 图 (邻接矩阵) java图形界面 实现 图的深度优先遍历算法 广度遍历算法 删除增加顶点等

资源截图

代码片段和文件信息

//数据结构:图遍历程序
import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class MGraph
{

    private boolean[] visited; //是否遍历过

    private int[][] graph; //二维数组图

    public linkedList vertex = new linkedList();   //定义链表来存储图的顶点

    public MGraph()
    {
vertex.clear();
visited = new boolean[10];
graph = new int[10][10];
for(int i = 0; i < 10; i++)
{
     visited[i] = false;
     for(int j = 0; j < vertex.size(); j++)
{
graph[i][j] = 0;
            }
}

    }
    public void initGraph()  //构造默认图
    {
vertex.clear();      //清空链表
     vertex.addLast(“A“);
vertex.addLast(“B“);
vertex.addLast(“C“);
vertex.addLast(“D“);
vertex.addLast(“E“);

this.Delvisited();

        //把有边的设为1
        graph[0][1] = 1;graph[1][0] = 1; //点1-2
        graph[0][4] = 1;graph[4][0] = 1; //点1-5
        graph[1][2] = 1;graph[2][1] = 1; //点2-3
        graph[1][3] = 1;graph[3][1] = 1; //点2-4
        graph[2][4] = 1;graph[4][2] = 1; //点3-5

    }

    public void Delvisited()   //初始化遍历数组
    {
     for(int i = 0; i < vertex.size(); i++)
     visited[i] = false;

    }
/*
    public String GetVex(int i)   //取图中第i个顶点的数据信息
    {
return vertex.get(i);
}
*/

public void PutVex(int iString value)  //将图中第i个顶点的数据域置为value
{
vertex.set(ivalue);
}

public void AddVex(String value)  //在图中加入一个顶点值为value
{
vertex.addLast(value);
}

public void ShowVex()
{
for(int i=0;i {
System.out.print(“顶点“+(i+1)+“: “+vertex.get(i));
GraphGui.textarea1.append(“顶点“+(i+1)+“: “+vertex.get(i)+“ “);
}
}

public void DeleteVex(int x)   //删除图中第x个顶点
{
vertex.remove(x);           //删除一个顶点后,注意vertex.size()已经减少1了

for(int i=x;i for(int j=0;j {
graph[i][j]=graph[i+1][j];
}
for(int i=0;i for(int j=x;j {
graph[i][j]=graph[i][j+1];
}

}

public void InserArc(int iint j)  //在图中插入一条边,其依附的两个顶点的编号为i和j
{
graph[i][j] = 1;
}

public void DeleteArc(int iint j)  //在图中删除一条边,其依附的两个顶点的编号为i和j
{
graph[i][j] = 0;
}

    public void DFSTraverse(int x)           //深度优先遍历图
    {
System.out.print(vertex.get(x)+“ “);   //访问顶点
GraphGui.textarea2.append(vertex.get(x)+“ “);
visited[x] = true;                 //标记为已访问过

        for(int i = 0; i < vertex.size(); i++)
        {
            if(graph[x][i] == 1 && visited[i] == false) //如果有边而又未被访问过
            {
                DFSTraverse(i);          //递归遍历点
            }
        }
    }

    public void BFSTraverse(int v)           //广度优先遍历图
    {
     Queue queue=new Queue();  //初始化队列
     System.out.print(vertex.get(v)+“ “);   //访问顶点
     GraphGui.textarea2.append(vertex.get(v)+“ “);
     visited[v] = true;
     queue.EnQueue(v);                     //当前访问的顶点的编号入队
     while(queue.is

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       9753  2011-05-29 18:30  GraphGui.java

----------- ---------  ---------- -----  ----

                 9753                    1


评论

共有 条评论