数据结构实验——图的最小生成树和最短路径(有向图无向图判断)

实验一:判断一个无向图是不是一棵树

  public boolean isTree()

实验二:判断两个图是否相同

  public boolean equlas(Object obj)

实验方法与步骤(需求分析、算法设计思路、流程图等)

  1. 判断一个无向图是不是一棵树

判断一个图有n个结点,同时具有n-1条边,同时该图是个连通图。若满足条件,则是二叉树,否则并不是二叉树。

  1. 判断两个图是否相同

通过遍历,比较结点和边的数量,同时比较边的权值,若都相同,则返回true,否则返回false。

四、实验原始纪录(源程序、数据结构等)

public abstract class AbstractGraph<T>                    

{

    protected static final int MAX_WEIGHT=99999;

    protected SeqList<T> vertexlist;

    boolean directed;

    public AbstractGraph(int length)                       

    {

        this.vertexlist = new SeqList<T>(length);

    //    System.out.println(this.vertexlist);

    }

    public AbstractGraph()                                 

    {

        this(10);                                        

    }

    public int vertexCount()                             

    {

        return this.vertexlist.size();                     

    }

    public int edeCount()

    {

return 0;

    }

    public String toString()                            

    {

        return "顶点集合:"+this.vertexlist.toString()+"\n";

    }

    public T getVertex(int i)                        

    {

        return this.vertexlist.get(i);                

    }

    public void setVertex(int i, T x)                      

    {

        this.vertexlist.set(i,x);                          

    }

    

    public abstract int insertVertex(T x);               

    public abstract void removeVertex(int i);              

    public abstract int weight(int i, int j);             

    protected abstract int next(int i, int j);

    public void DFSTraverse(int i)                         

    {

        boolean[] visited=new boolean[this.vertexCount()];

        int j=i;

        do

        {   if (!visited[j])                             

            {

                System.out.print("{ ");

                this.depthfs(j, visited);                

                System.out.print("} ");

            }

            j = (j+1) % this.vertexCount();               

        } while (j!=i);

        System.out.println();

    }

    private void depthfs(int i, boolean[] visited)

    {

        System.out.print(this.getVertex(i)+" ");          

        visited[i] = true;                                

        for (int j=this.next(i,-1); j!=-1; j=this.next(i,j))

            if(!visited[j])                         

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值