首页
编程语言
数据库
网络开发
Algorithm算法
移动开发
系统相关
金融统计
人工智能
其他
首页
>
> 详细
辅导C++图数据结构、辅导Graph C++程序 解析C/C++编程|辅导Python程序
#include
#include
#include
// A vertex is a 2D point
typedef struct Vertex {
int x; // x-coordinate
int y; // y-coordinate
} Vertex;
// each edge is a pair of vertices (end-points)
typedef struct Edge {
Vertex *p1; // first end point
Vertex *p2; // second end point
} Edge;
typedef struct VertexNode {
Vertex *v;
} VertexNode;
typedef struct GraphRep *Graph;
typedef struct GraphRep { // graph header
VertexNode *vertices; // an array of vertices or a linked list of vertices
int nV; // #vertices
int nE; // #edges
} GraphRep;
// A vertex node stores a vertex and other information, and you need to expand this type
//The above types serve as a starting point only. You need to expand them and add more types.
// Watch the lecture video between 7:50pm-8:20 or so for my discussion about this assignment
// Add the time complexity analysis of CreateEmptyGraph() here
Graph CreateEmptyGraph()
{
}
// Add the time complexity analysis of InsertEdge() here
int InsertEdge(Graph g, Edge *e)
{
}
// Add the time complexity analysis of DeleteEdge() here
void DeleteEdge(Graph g, Edge *e)
{
}
// Add the time complexity analysis of ReachableVertices() here
void ReachableVertices(Graph g, Vertex *v)
{
}
// Add the time complexity analysis of ShortestPath() here
void ShortestPath(Graph g, Vertex *u, Vertex *v)
{
}
// Add the time complexity analysis of FreeGraph() here
void FreeGraph(Graph g)
{
}
// Add the time complexity analysis of ShowGraph() here
void ShowGraph(Graph g)
{
}
int main() //sample main for testing
{
Graph g1;
Edge *e_ptr;
Vertex *v1, *v2;
// Create an empty graph g1;
g1=CreateEmptyGraph();
// Create first connected component
// Insert edge (0,0)-(0,10)
e_ptr = (Edge*) malloc(sizeof(Edge));
assert(e_ptr != NULL);
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=0;
v1->y=0;
v2->x=0;
v2->y=10;
e_ptr->p1=v1;
e_ptr->p2=v2;
if (InsertEdge(g1, e_ptr)==0) printf("edge exists\n");
// Insert edge (0,0)-(5,6)
e_ptr = (Edge*) malloc(sizeof(Edge));
assert(e_ptr != NULL);
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=0;
v1->y=0;
v2->x=5;
v2->y=6;
e_ptr->p1=v1;
e_ptr->p2=v2;
if (InsertEdge(g1, e_ptr)==0) printf("edge exists\n");
// Insert edge (0, 10)-(10, 10)
e_ptr = (Edge*) malloc(sizeof(Edge));
assert(e_ptr != NULL);
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=0;
v1->y=10;
v2->x=10;
v2->y=10;
e_ptr->p1=v1;
e_ptr->p2=v2;
if (InsertEdge(g1, e_ptr)==0) printf("edge exists\n");
// Insert edge (0,10)-(5,6)
e_ptr = (Edge*) malloc(sizeof(Edge));
assert(e_ptr != NULL);
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=0;
v1->y=10;
v2->x=5;
v2->y=6;
e_ptr->p1=v1;
e_ptr->p2=v2;
if (InsertEdge(g1, e_ptr)==0) printf("edge exists\n");
// Insert edge (0,0)-(5,4)
e_ptr = (Edge*) malloc(sizeof(Edge));
assert(e_ptr != NULL);
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=0;
v1->y=0;
v2->x=5;
v2->y=4;
e_ptr->p1=v1;
e_ptr->p2=v2;
if (InsertEdge(g1, e_ptr)==0) printf("edge exists\n");
// Insert edge (5, 4)-(10, 4)
e_ptr = (Edge*) malloc(sizeof(Edge));
assert(e_ptr != NULL);
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=5;
v1->y=4;
v2->x=10;
v2->y=4;
e_ptr->p1=v1;
e_ptr->p2=v2;
if (InsertEdge(g1, e_ptr)==0) printf("edge exists\n");
// Insert edge (5,6)-(10,6)
e_ptr = (Edge*) malloc(sizeof(Edge));
assert(e_ptr != NULL);
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=5;
v1->y=6;
v2->x=10;
v2->y=6;
e_ptr->p1=v1;
e_ptr->p2=v2;
if (InsertEdge(g1, e_ptr)==0) printf("edge exists\n");
// Insert edge (10,10)-(10,6)
e_ptr = (Edge*) malloc(sizeof(Edge));
assert(e_ptr != NULL);
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=10;
v1->y=10;
v2->x=10;
v2->y=6;
e_ptr->p1=v1;
e_ptr->p2=v2;
if (InsertEdge(g1, e_ptr)==0) printf("edge exists\n");
// Insert edge (10, 6)-(10, 4)
e_ptr = (Edge*) malloc(sizeof(Edge));
assert(e_ptr != NULL);
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=10;
v1->y=6;
v2->x=10;
v2->y=4;
e_ptr->p1=v1;
e_ptr->p2=v2;
if (InsertEdge(g1, e_ptr)==0) printf("edge exists\n");
// Create second connected component
// Insert edge (20,4)-(20,10)
e_ptr = (Edge*) malloc(sizeof(Edge));
assert(e_ptr != NULL);
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=20;
v1->y=4;
v2->x=20;
v2->y=10;
e_ptr->p1=v1;
e_ptr->p2=v2;
if (InsertEdge(g1, e_ptr)==0) printf("edge exists\n");
// Insert edge (20,10)-(30,10)
e_ptr = (Edge*) malloc(sizeof(Edge));
assert(e_ptr != NULL);
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=20;
v1->y=10;
v2->x=30;
v2->y=10;
e_ptr->p1=v1;
e_ptr->p2=v2;
if (InsertEdge(g1, e_ptr)==0) printf("edge exists\n");
// Insert edge (25,5)-(30,10)
e_ptr = (Edge*) malloc(sizeof(Edge));
assert(e_ptr != NULL);
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=25;
v1->y=5;
v2->x=30;
v2->y=10;
e_ptr->p1=v1;
e_ptr->p2=v2;
if (InsertEdge(g1, e_ptr)==0) printf("edge exists\n");
//Display graph g1
ShowGraph(g1);
// Find the shortest path between (0,0) and (10,6)
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=0;
v1->y=0;
v2->x=10;
v2->y=6;
ShortestPath(g1, v1, v2);
free(v1);
free(v2);
// Delete edge (0,0)-(5, 6)
e_ptr = (Edge*) malloc(sizeof(Edge));
assert(e_ptr != NULL);
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=0;
v1->y=0;
v2->x=5;
v2->y=6;
e_ptr->p1=v1;
e_ptr->p2=v2;
DeleteEdge(g1, e_ptr);
free(e_ptr);
free(v1);
free(v2);
// Display graph g1
ShowGraph(g1);
// Find the shortest path between (0,0) and (10,6)
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=0;
v1->y=0;
v2->x=10;
v2->y=6;
ShortestPath(g1, v1, v2);
free(v1);
free(v2);
// Find the shortest path between (0,0) and (25,5)
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v2=(Vertex *) malloc(sizeof(Vertex));
assert(v2 != NULL);
v1->x=0;
v1->y=0;
v2->x=25;
v2->y=5;
ShortestPath(g1, v1, v2);
free(v1);
free(v2);
// Find reachable vertices of (0,0)
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v1->x=0;
v1->y=0;
ReachableVertices(g1, v1);
free(v1);
// Find reachable vertices of (20,4)
v1=(Vertex*) malloc(sizeof(Vertex));
assert(v1 != NULL);
v1->x=20;
v1->y=4;
ReachableVertices(g1, v1);
free(v1);
// Free graph g1
FreeGraph(g1);
return 0;
}
联系我们
QQ:99515681
邮箱:99515681@qq.com
工作时间:8:00-21:00
微信:codinghelp
热点文章
更多
辅导 comm2000 creating socia...
2026-01-08
讲解 isen1000 – introductio...
2026-01-08
讲解 cme213 radix sort讲解 c...
2026-01-08
辅导 csc370 database讲解 迭代
2026-01-08
讲解 ca2401 a list of colleg...
2026-01-08
讲解 nfe2140 midi scale play...
2026-01-08
讲解 ca2401 the universal li...
2026-01-08
辅导 engg7302 advanced compu...
2026-01-08
辅导 comp331/557 – class te...
2026-01-08
讲解 soft2412 comp9412 exam辅...
2026-01-08
讲解 scenario # 1 honesty讲解...
2026-01-08
讲解 002499 accounting infor...
2026-01-08
讲解 comp9313 2021t3 project...
2026-01-08
讲解 stat1201 analysis of sc...
2026-01-08
辅导 stat5611: statistical m...
2026-01-08
辅导 mth2010-mth2015 - multi...
2026-01-08
辅导 eeet2387 switched mode ...
2026-01-08
讲解 an online payment servi...
2026-01-08
讲解 textfilter辅导 r语言
2026-01-08
讲解 rutgers ece 434 linux o...
2026-01-08
热点标签
mktg2509
csci 2600
38170
lng302
csse3010
phas3226
77938
arch1162
engn4536/engn6536
acx5903
comp151101
phl245
cse12
comp9312
stat3016/6016
phas0038
comp2140
6qqmb312
xjco3011
rest0005
ematm0051
5qqmn219
lubs5062m
eee8155
cege0100
eap033
artd1109
mat246
etc3430
ecmm462
mis102
inft6800
ddes9903
comp6521
comp9517
comp3331/9331
comp4337
comp6008
comp9414
bu.231.790.81
man00150m
csb352h
math1041
eengm4100
isys1002
08
6057cem
mktg3504
mthm036
mtrx1701
mth3241
eeee3086
cmp-7038b
cmp-7000a
ints4010
econ2151
infs5710
fins5516
fin3309
fins5510
gsoe9340
math2007
math2036
soee5010
mark3088
infs3605
elec9714
comp2271
ma214
comp2211
infs3604
600426
sit254
acct3091
bbt405
msin0116
com107/com113
mark5826
sit120
comp9021
eco2101
eeen40700
cs253
ece3114
ecmm447
chns3000
math377
itd102
comp9444
comp(2041|9044)
econ0060
econ7230
mgt001371
ecs-323
cs6250
mgdi60012
mdia2012
comm221001
comm5000
ma1008
engl642
econ241
com333
math367
mis201
nbs-7041x
meek16104
econ2003
comm1190
mbas902
comp-1027
dpst1091
comp7315
eppd1033
m06
ee3025
msci231
bb113/bbs1063
fc709
comp3425
comp9417
econ42915
cb9101
math1102e
chme0017
fc307
mkt60104
5522usst
litr1-uc6201.200
ee1102
cosc2803
math39512
omp9727
int2067/int5051
bsb151
mgt253
fc021
babs2202
mis2002s
phya21
18-213
cege0012
mdia1002
math38032
mech5125
07
cisc102
mgx3110
cs240
11175
fin3020s
eco3420
ictten622
comp9727
cpt111
de114102d
mgm320h5s
bafi1019
math21112
efim20036
mn-3503
fins5568
110.807
bcpm000028
info6030
bma0092
bcpm0054
math20212
ce335
cs365
cenv6141
ftec5580
math2010
ec3450
comm1170
ecmt1010
csci-ua.0480-003
econ12-200
ib3960
ectb60h3f
cs247—assignment
tk3163
ics3u
ib3j80
comp20008
comp9334
eppd1063
acct2343
cct109
isys1055/3412
math350-real
math2014
eec180
stat141b
econ2101
msinm014/msing014/msing014b
fit2004
comp643
bu1002
cm2030
联系我们
- QQ: 99515681 微信:codinghelp
© 2024
www.7daixie.com
站长地图
程序辅导网!