资源简介
图的C++的邻接表和邻接矩阵完整实现,功能齐全,运行界面效果好
代码片段和文件信息
#include
#include
#include //引入标准库中的头文件
#include “graph.h“ //引入头文件
using namespace std;
/*
*前置条件:图不存在
*输 入:无
*功 能:图的初始化
*输 出:无
*后置条件:构造一个空的图
*/
template
MGraph::MGraph(T a[] int n int e bool tflag bool tnet)
{
vertexNum = n; //顶点数
arcNum = e; //边数
flag = tflag; //有向图还是无向图的标识
net = tnet; //带权图还是不带权图的标识
Initgraph(n);//动态创建图的顶点数组和边数组
for (int i = 0; i vertex[i] = a[i];
if (net == false)// 如果是不带权图
{
for (int i = 0; i for (int j = 0; j < maxsize; j++)
arc[i][j] = 0;
}
else //带权图
{
for (int i = 0; i < maxsize; i++) //初始化邻接矩阵
for (int j = 0; j < maxsize; j++)
arc[i][j] = Maxweigh;
}
for (int i = 0; i < maxsize; i++)//初始化储存顶点度,入度,出度的数组
{
degree[i] = indegree[i] = outdegree[i] = 0;
}
Initarc();//创建邻接矩阵
calculatedegree();//计算各顶点的度,入度,出度
}
template
MGraph::MGraph(MGraph&M)
{
Copy(M);
}
template
MGraph::~MGraph()//析构函数
{
Empty();//调用清理内存函数清理内存;
}
template
void MGraph::Empty()//清理内存函数
{
for (int i = 0; i < maxsize; i++)
delete[]arc[i];//清理邻接矩阵每一行数组的动态内存
delete[]arc;//清理指针数组的内存
delete[]vertex;//清理顶点数组的内存
delete[]degree;//清理储存顶点度的数组的内存
delete[]indegree;//清理储存顶点入度的数组的内存
delete[]outdegree;//清理储存顶点出度的数组的内存
delete[]visited;//清理访问数组的动态内存
}
template
void MGraph::Copy(MGraph&M)
{
//拷贝私有数据成员
vertexNum = M.vertexNum;
arcNum = M.arcNum;
maxsize = maxsize > M.maxsize ? maxsize : M.maxsize;//取maxsize与M.maxsize
flag = M.flag;
net = M.net;
vertex =new T[maxsize];
for (int i = 0; i < maxsize; i++)//拷贝顶点数组
vertex[i] = M.vertex[i];
arc = new int*[maxsize];
for (int i = 0; i < maxsize; i++)
{
arc[i] = new int[maxsize];
}
for (int i = 0; i < maxsize; i++)//拷贝邻接矩阵
{
for (int j = 0; i < maxsize; j++)
{
arc[i][j] = M.arc[i][j];
}
}
degree = new int[maxsize];
for (int i = 0; i < maxsize; i++)//拷贝储存顶点度的数组
degree[i] = M.degree[i];
indegree = new int[maxsize];
for (int i = 0; i < maxsize; i++)//拷贝储存顶点入度的数组
indegree[i] = M.indegree[i];
outdegree = new int[maxsize];
for (int i = 0; i < maxsize; i++)//拷贝储存顶点入度的数组
outdegree[i] = M.outdegree[i];
}
template
void MGraph::Initgraph(int n)
{
if (n < MaxSize)//如果结点个数n小于MaxSize,图的结点最大容纳个数设为默认值MaxSize
{
maxsize = MaxSize;
}
else//如果结点个数n大于等于MaxSize,则图的结点最大容纳个数设为n+10
{
maxsize = n + 10;
}
vertex = new T[maxsize];// 创建动态顶点数组
arc = new int*[maxsize];//创建邻接矩阵的行指针
for (int i = 0; i {
arc[i] = new int[maxsize];
}
degree = new int[maxsize];//创建动态储存各顶点度的数组
indegree = new int[maxsize];//创建动态储存各顶点入度的数组
outdegree = new int[maxsize];// 创建动态储存各顶点出度的数组
}
template
void MGraph::Initarc()
{
if (flag == false) //无向图
{
fo
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 16074 2018-06-10 15:32 实验10+16342113+刘剑锋+20180610\邻接矩阵\graph.cpp
文件 2479 2018-06-10 15:32 实验10+16342113+刘剑锋+20180610\邻接矩阵\graph.h
文件 4985 2018-06-10 11:13 实验10+16342113+刘剑锋+20180610\邻接矩阵\main.cpp
文件 111616 2018-06-10 15:32 实验10+16342113+刘剑锋+20180610\邻接矩阵\Project123.exe
文件 11357 2018-06-10 15:38 实验10+16342113+刘剑锋+20180610\邻接矩阵\图的邻接矩阵储存运行结果.txt
文件 14694 2018-06-10 15:24 实验10+16342113+刘剑锋+20180610\邻接表\graph.cpp
文件 2614 2018-06-10 15:16 实验10+16342113+刘剑锋+20180610\邻接表\graph.h
文件 5326 2018-06-10 13:59 实验10+16342113+刘剑锋+20180610\邻接表\main.cpp
文件 110592 2018-06-10 15:24 实验10+16342113+刘剑锋+20180610\邻接表\Project124.exe
文件 11780 2018-06-10 15:30 实验10+16342113+刘剑锋+20180610\邻接表\图的邻接表储存运行结果.txt
目录 0 2018-06-10 15:40 实验10+16342113+刘剑锋+20180610\邻接矩阵
目录 0 2018-06-10 15:41 实验10+16342113+刘剑锋+20180610\邻接表
目录 0 2018-06-10 15:39 实验10+16342113+刘剑锋+20180610
----------- --------- ---------- ----- ----
291517 13
- 上一篇:拉丁矩阵C语言算法和报告.zip
- 下一篇:稀疏矩阵加减乘C++实现
相关资源
- ASR6500,ASR6505原厂测试代码
- LCD驱动芯片ST7701SI SPI接口底层驱动配
- stm32库函数代码自动生成器V1.2
- USB CAN Tool 源代码(LabVIEW 2011环境)
- 超声波水表源代码
- 一个模糊PID温度控制算法源代码
- 颜色识别形状识别STM103嵌入式代码
- PE文件操作代码
- 数据结构 图的遍历源代码
- 数据结构实验源代码集
- 高性能服务器代码(50_06th_server_thre
- olsr协议代码
- TCP/IP客户端和服务器端源代码,好用
- 代码雨.cpp
- 基于opencv的模板匹配代码
- 交互式计算机图形学 第六版 OpenGL源代
- 数据结构教程李春葆第五版书中例题
- 三次样条插值类源代码!
- 高精度加法(c++代码)
- diy写字机grbl v1.1源代码
- ftp工具代码
- C语言常用代码(分章节)
- C语言常用算法源代码
- 吕鑫:VS2015之博大精深的0基础C语言视
- c++ 刷屏软件代码
- 关于LED制作的源代码合集(38套)
- OBD_CAN读取代码(stm32f103)
-
STM32-ba
se64加密源代码 - 谭浩强第五版课件及代码
- 俄罗斯方块(c++控制台代码)
评论
共有 条评论