胡志豪实验报告07图的应用一.docx

上传人:b****3 文档编号:4003222 上传时间:2022-11-27 格式:DOCX 页数:7 大小:16.23KB
下载 相关 举报
胡志豪实验报告07图的应用一.docx_第1页
第1页 / 共7页
胡志豪实验报告07图的应用一.docx_第2页
第2页 / 共7页
胡志豪实验报告07图的应用一.docx_第3页
第3页 / 共7页
胡志豪实验报告07图的应用一.docx_第4页
第4页 / 共7页
胡志豪实验报告07图的应用一.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

胡志豪实验报告07图的应用一.docx

《胡志豪实验报告07图的应用一.docx》由会员分享,可在线阅读,更多相关《胡志豪实验报告07图的应用一.docx(7页珍藏版)》请在冰豆网上搜索。

胡志豪实验报告07图的应用一.docx

胡志豪实验报告07图的应用一

计算机科学与工程学院

《算法与数据结构》实验报告(七)

专业班级

20XX级计算机XX班

实验地点

J419机房

学生学号

指导教师

张俊

学生姓名

实验时间

2018-5-22

实验项目

图的应用一

实验类别

基础性()设计性(√)综合性()其它()

实验目的及要求

(1)熟练掌握图的基本存储方法;

(2)熟练掌握图的深度优先和广度优先搜索方法;

(3)应用DFS和BFS的思想解决常见问题。

成绩评定表

类别

评分标准

分值

得分

合计

上机表现

积极出勤、遵守纪律

按要求完成设计任务

30分

程序与报告

程序代码规范、功能正确

报告详实完整、体现收获

70分

说明:

 

评阅教师:

张俊

日期:

2018年5月22日

 

实验内容

实验内容:

图的两种遍历方法及对应的生成树。

自己编写源程序,把图的深度优先遍历、广度优先遍历改为输出深度优先生成树、广度优先生成树。

实验说明:

(1)读懂教师给定的程序或课本的程序;

(2)输入图;

(3)把显示遍历序列改为显示深度优先、广度优先生成树。

#ifndefDIGRPH_H

#defineDIGRPH_H

#include

#include

#defineMAXV100

#defineINF32767

typedefcharInfoType;

typedefstructANode

{

intadjvex;

structANode*nextarc;

intweight;

}ArcNode;

typedefstructVnode

{

InfoTypeinfo;

ArcNode*firstarc;

}VNode;

typedefstruct

{

VNodeadjlist[MAXV];

intn,e;

}AdjGraph;

voidCreateAdj(AdjGraph*&G,intA[MAXV][MAXV],intn,inte)

{

inti,j;

ArcNode*p;

G=(AdjGraph*)malloc(sizeof(AdjGraph));

for(i=0;i

G->adjlist[i].firstarc=NULL;

for(i=0;i

for(j=n-1;j>=0;j--)

if(A[i][j]!

=0&&A[i][j]!

=INF)

{

p=(ArcNode*)malloc(sizeof(ArcNode));

p->adjvex=j;

p->weight=A[i][j];

p->nextarc=G->adjlist[i].firstarc;

G->adjlist[i].firstarc=p;

}

G->n=n;G->e=e;

}

voidDispAdj(AdjGraph*G)

{

inti;

ArcNode*p;for(i=0;in;i++)

{

p=G->adjlist[i].firstarc;printf("%3d:

",i);

while(p!

=NULL)

{

printf("%3d[%d]→",p->adjvex,p->weight);

p=p->nextarc;

}

printf("∧\n");

}

}

voidDestroyAdj(AdjGraph*&G)

{

inti;

ArcNode*pre,*p;

for(i=0;in;i++)

{

pre=G->adjlist[i].firstarc;

if(pre!

=NULL)

{

p=pre->nextarc;

while(p!

=NULL)

{

free(pre);

pre=p;

p=p->nextarc;

}

free(pre);

}

}

free(G);

}

voidDFS(AdjGraph*G,intv)

{

ArcNode*p;intw;

visited[v]=1;

printf("%d",v);

p=G->adjlist[v].firstarc;

while(p!

=NULL)

{

w=p->adjvex;

if(visited[w]==0)

DFS(G,w);

p=p->nextarc;

}

}

#endif

#ifndefSQ_QUEUE

#defineSQ_QUEUE

#defineMaxSize100

typedefstruct

{

ElemTypedata[MaxSize];

intfront,rear;//队首和队尾指针

}SqQueue;

voidInitQueue(SqQueue*&q)

{q=(SqQueue*)malloc(sizeof(SqQueue));

q->front=q->rear=0;

}

voidDestroyQueue(SqQueue*&q)

{

free(q);

}

boolQueueEmpty(SqQueue*q)

{

return(q->front==q->rear);

}

boolenQueue(SqQueue*&q,ElemTypee)

{if((q->rear+1)%MaxSize==q->front)//队满上溢出

returnfalse;

q->rear=(q->rear+1)%MaxSize;

q->data[q->rear]=e;

returntrue;

}

booldeQueue(SqQueue*&q,ElemType&e)

{if(q->front==q->rear)//队空下溢出

returnfalse;

q->front=(q->front+1)%MaxSize;

e=q->data[q->front];

returntrue;

}

#endif//SQ_QUEUE

#include"digraph.h"

intmain()

{

intA[6][MAXV]={{0,5,0,7,0,0},

{0,0,4,0,0,0},

{8,0,0,0,0,9},

{0,0,5,0,0,6},

{3,0,0,0,1,0}};

AdjGraph*G;

CreateAdj(G,A,6,10);

DispAdj(G);

DestroyAdj(G);

}

实验内容

实验内容

实验总结

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

当前位置:首页 > 经管营销 > 经济市场

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

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