zoukankan      html  css  js  c++  java
  • 实验四 -图的实现与应用


    style: ocean

    实验四 -图的实现与应用

    实验内容

    实验1

    用邻接矩阵实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器。给出伪代码,产品代码,测试代码(不少于5条测试)。。上方提交代码链接。附件提交测试截图。

    一般存储图的方式有两种:一是用邻接矩阵表示,二是用邻接链表。

    所谓用邻接矩阵,是用一个二维数组存储,边使用矩阵来构建模型,这使得每一个顶点和其它顶点之间都有边的有无 的 表示的机会。若有边,则他们交点 为1 ,否则为0。当然,如果是一副边有权值的图,交点存储的是他们边的权值。

    首先收一下无向图的存储:

    无向图的边的矩阵一定是一个对称矩阵,因为无向图只关心边是否存在,而不关心方向,V0和V1有边,那么V1和V0也有边。

    因为这里不研究有圈图,所以主对角线都是0,输入V0和V1边的关系后,就不必输入V1和V0的关系了。

    实验2

    用十字链表实现无向图(边和顶点都要保存),实现在包含添加和删除结点的方法,添加和删除边的方法,size(),isEmpty(),广度优先迭代器,深度优先迭代器。给出伪代码,产品代码,测试代码(不少于5条测试)。上方提交代码链接。附件提交测试截图。

    十字链表存储结构

    定义顶点表结点结构:
    顶点表结点结构
    其中,firstIn表示入边表头指针,指向该顶点的入边表中第一个结点,firstOut表示出边表头指针,指向该顶点的出边表中的第一个结点。

    定义边表结点结构:

    其中,tailvex是指弧起点在顶点表的下标,headvex是弧终点在顶点表的下标,headlink是指入边表指针域,指向终点相同的下一条边,tailvex是指边表指针域,指向起点相同的下一条边。

    表示

    • 给定一个有向图,先画出其邻接表及逆邻接表

    • 将两个表中的顶点转化为所在边,即两个顶点组成;

    • 在邻接表中添加一个指针域,作为逆邻接表的指针域;

    • 将逆邻接表中的链接线在邻接表中找出并进行链接;

    实验3

    实现PP19.9。给出伪代码,产品代码,测试代码(不少于5条测试)。上方提交代码链接。附件提交测试截图

  • 相关阅读:
    线程学习笔记(一)
    进程间通信
    管道通信操作
    在程序中执行shell命令
    进程控制(一)
    Makefile文件学习总结
    进程学习笔记
    C#不安全代码和指针
    Unity3D ShaderLab 修改渲染队列进行深度排序
    Unity3D ShaderLab 透明裁剪着色器
  • 原文地址:https://www.cnblogs.com/pingch/p/7900711.html
Copyright © 2011-2022 走看看