資源簡介
圖的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? arc[i][j]?=?0;
}
else??//帶權圖
{
for?(int?i?=?0;?i? for?(int?j?=?0;?j? arc[i][j]?=?Maxweigh;
}
for?(int?i?=?0;?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? 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? vertex[i]?=?M.vertex[i];
arc?=?new?int*[maxsize];
for?(int?i?=?0;?i? {
arc[i]?=?new?int[maxsize];
}
for?(int?i?=?0;?i? {
for?(int?j?=?0;?i? {
arc[i][j]?=?M.arc[i][j];
}
}
degree?=?new?int[maxsize];
for?(int?i?=?0;?i? degree[i]?=?M.degree[i];
indegree?=?new?int[maxsize];
for?(int?i?=?0;?i? indegree[i]?=?M.indegree[i];
outdegree?=?new?int[maxsize];
for?(int?i?=?0;?i? outdegree[i]?=?M.outdegree[i];
}
template
void?MGraph::Initgraph(int?n)
{
if?(n? {
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++實現
評論
共有 條評論