/*
檔名稱:jcy
作 者:賈存鈺
完成日期:2023年11月9日
問題描述:定義圖的鄰接矩陣和鄰接表儲存結構,實現其基本運算,並完成測試。
標頭檔案graph.h中定義相關的資料結構並宣告用於完成基本運算的函式。
在graph.cpp中實現這些函式.用main.cpp中的main函式中完成測試。
*/[cpp]view plain
copy
#ifndef graph_h_included
#define graph_h_included
#define maxv 100 //最大頂點個數
#define inf 32767
//inf表示∞
typedef
intinfotype;
//以下定義鄰接矩陣型別
typedef
struct
vertextype; //頂點型別
typedef
struct
//圖的定義
mgraph; //圖的鄰接矩陣型別
//以下定義鄰接表型別
typedef
struct
anode
//弧的結點結構型別
arcnode;
typedef
intvertex;
typedef
struct
vnode
//鄰接表頭結點的型別
vnode;
typedef
vnode adjlist[maxv];
//adjlist是鄰接表型別
typedef
struct
algraph; //圖的鄰接表型別
//功能:由乙個反映圖中頂點鄰接關係的二維陣列,構造出用鄰接矩陣儲存的圖
//引數:arr - 陣列名,由於形式引數為二維陣列時必須給出每行的元素個數,在此將引數arr宣告為一維陣列名(指向int的指標)
// n - 矩陣的階數
// g - 要構造出來的鄰接矩陣資料結構
void
arraytomat(
int*arr,
intn, mgraph &g);
//用普通陣列構造圖的鄰接矩陣
void
arraytolist(
int*arr,
intn, algraph *&);
//用普通陣列構造圖的鄰接表
void
mattolist(mgraph g,algraph *&g);
//將鄰接矩陣g轉換成鄰接表g
void
listtomat(algraph *g,mgraph &g);
//將鄰接表g轉換成鄰接矩陣g
void
dispmat(mgraph g);
//輸出鄰接矩陣g
void
dispadj(algraph *g);
//輸出鄰接表g
#endif // graph_h_included
[cpp]view plain
copy
#include
#include
#include "graph.h"
//功能:由乙個反映圖中頂點鄰接關係的二維陣列,構造出用鄰接矩陣儲存的圖
//引數:arr - 陣列名,由於形式引數為二維陣列時必須給出每行的元素個數,在此將引數arr宣告為一維陣列名(指向int的指標)
// n - 矩陣的階數
// g - 要構造出來的鄰接矩陣資料結構
void
arraytomat(
int*arr,
intn, mgraph &g)
g.e=count;
} void
arraytolist(
int*arr,
intn, algraph *&g)
g->e=count;
} void
mattolist(mgraph g, algraph *&g)
//將鄰接矩陣g轉換成鄰接表g
g->n=g.n;
g->e=g.e;
} void
listtomat(algraph *g,mgraph &g)
//將鄰接表g轉換成鄰接矩陣g
} } void
dispmat(mgraph g)
//輸出鄰接矩陣g
} void
dispadj(algraph *g)
//輸出鄰接表g
printf("\n"
);
} }
[cpp]view plain
copy
#include
#include
#include "graph.h"
intmain()
, ,
, ,
,
};
arraytomat(a[0], 6, g1); //取二維陣列的起始位址作實參,用a[0],因其實質為一維陣列位址,與形參匹配
printf(" 有向圖g1的鄰接矩陣:\n"
);
dispmat(g1);
arraytolist(a[0], 6, g1);
printf(" 有向圖g1的鄰接表:\n"
);
dispadj(g1);
mattolist(g1,g2);
printf(" 圖g1的鄰接矩陣轉換成鄰接表g2:\n"
);
dispadj(g2);
listtomat(g1,g2);
printf(" 圖g1的鄰接表轉換成鄰接鄰陣g2:\n"
第十一周專案一
煙台大學計算機學院 檔名稱 1.cpp 完成日期 2017年11月23日 問題描述 定義圖的鄰接矩陣和鄰接表儲存結構,實現其基本運算,並完成測試。輸入描述 無 輸出描述 輸出鄰接矩陣,鄰接表。include define maxv 100 define inf 32767 typedef intin...
第十一周專案一(3)
問題描述 執行並重複測試教學內容中涉及的演算法。改變測試資料進行重複測試的意義在於,可以從更多角度體會演算法,以達到逐漸掌握演算法的程度。使用你的測試資料,並展示測試結果,觀察執行結果,以此來領會演算法。輸入描述 若干測試資料。程式輸出 對應資料的輸出。include include define ...
第十一周專案2 (2)
檔名稱 main.cpp 完成日期 2015年5月18日 版本號 v1.0 問題描述 定義乙個名為cperson的類,在此基礎上派生出cemployee類,派生類cemployee增加了兩個新的資料成員,分別用於表示部門和薪水。要求派生類cemployee的建構函式顯示呼叫基類cperson的建構函...