实验五图的基本操作Word文档下载推荐.docx

上传人:b****6 文档编号:20038080 上传时间:2023-01-16 格式:DOCX 页数:12 大小:56.73KB
下载 相关 举报
实验五图的基本操作Word文档下载推荐.docx_第1页
第1页 / 共12页
实验五图的基本操作Word文档下载推荐.docx_第2页
第2页 / 共12页
实验五图的基本操作Word文档下载推荐.docx_第3页
第3页 / 共12页
实验五图的基本操作Word文档下载推荐.docx_第4页
第4页 / 共12页
实验五图的基本操作Word文档下载推荐.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

实验五图的基本操作Word文档下载推荐.docx

《实验五图的基本操作Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验五图的基本操作Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。

实验五图的基本操作Word文档下载推荐.docx

三、实验前的准备工作

1、掌握图的相关概念。

2、掌握图的逻辑结构和存储结构。

3、掌握图的两种遍历算法的实现。

四、实验报告要求

1、实验报告要按照实验报告格式规范书写。

2、实验上要写出多批测试数据的运行结果。

3、结合运行结果,对程序进行分析。

5、实验步骤

(1)、数据结构与核心算法的设计描述

//邻接表创建图

intCreateGraph(Graph&

G){

ArcNode*s;

cout<

<

"

输入顶点和弧个数:

;

cin>

>

G.vernum>

G.arcnum;

输入各顶点信息:

\n"

for(inti=0;

i<

G.vernum;

i++){

G.ver[i].data;

G.ver[i].first=NULL;

}

输入弧相关信息:

for(intj=0;

j<

j++){

for(intk=0;

k<

k++){

intflag;

cout<

G.ver[j].data<

与"

G.ver[k].data<

是否存在弧?

(1-存在/0-不存在)"

cin>

flag;

if(flag==1){

s=newArcNode;

s->

adjver=k;

next=G.ver[j].first;

G.ver[j].first=s;

adjver=j;

next=G.ver[k].first;

G.ver[k].first=s;

}

}

return0;

}

//深度优先搜索遍历

voidDFS(Graph&

G,inti){

visited[i]=true;

ArcNode*p;

p=G.ver[i].first;

while(p){

if(!

visited[p->

adjver])

DFS(G,p->

adjver);

p=p->

next;

voidLengthTraval(Graph&

inti;

for(i=0;

i++)

visited[i]=false;

visited[i])

DFS(G,i);

//广度优先搜索遍历

voidBFS(Graph&

G,intk){

QueueQ;

InitQueue(Q);

G.ver[k].data;

visited[k]=true;

EnQueue(Q,k);

while(Q.rear!

=Q.front){

i=DelQueue(Q);

p=G.ver[k].first;

while(p){

if(!

adjver]){

cout<

G.ver[p->

adjver].data;

visited[p->

adjver]=true;

EnQueue(Q,p->

p=p->

voidBroadTraval(Graph&

BFS(G,i);

㈡、函数调用及主函数设计

intmain(){

GraphG;

menu();

intflag=1;

while(flag){

intn;

输入操作编号:

cin>

n;

switch(n){

case1:

CreateGraph(G);

break;

case2:

LengthTraval(G);

case3:

BroadTraval(G);

intk;

是否继续?

(1-继续/0-退出)"

k;

flag=k;

}

㈢程序调试及运行结果分析(应包含多组测试数据)

6、实验总结

这次实验,我真的懂得了好多东西。

我感觉自己有好多东西要学,自己现在的知识还很浅。

所以,我会好好努力的,继续加油。

 

程序清单:

#include<

iostream>

usingnamespacestd;

#defineVERTEX_NUM10

typedefcharVerType;

voidmenu();

boolvisited[VERTEX_NUM];

typedefstructArcNode{

intadjver;

//弧指向顶点的位置

structArcNode*next;

//指向下一条弧的指针

intinfo;

//弧的相关信息指针

}ArcNode;

typedefstructVerNode{

VerTypedata;

//顶点元素

structArcNode*first;

//指向第一条依附该顶点的弧

}VerNode,AdjList[VERTEX_NUM];

typedefstruct{

intvernum,arcnum;

//顶点、弧数量

AdjListver;

//顶点集合

intkind;

//图的种类

}Graph;

voidmenu(){

|-------------------------------------------------|\n"

|---****图的基本操作****---|\n"

|---****1-创建图****---|\n"

|---****2-深度优先遍历****---|\n"

|---****3-广度优先遍历****---|\n"

j;

intfront;

intrear;

intdata[VERTEX_NUM];

}Queue;

//初始化

intInitQueue(Queue&

Q){

Q.rear=Q.front=0;

return0;

intEnQueue(Queue&

Q,inte){

if((Q.rear-Q.front)<

=VERTEX_NUM){

Q.data[Q.rear]=e;

Q.rear=(Q.rear+1)%VERTEX_NUM;

intDelQueue(Queue&

intt;

if(Q.rear==Q.front)return0;

else{

t=Q.data[Q.front];

Q.front=(Q.front+1)%VERTEX_NUM;

returnt;

{

深度优先遍历结果:

LengthTraval(G);

}break;

广度优先遍历结果:

BroadTraval(G);

流程图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1