计算机实验报告经典Word文档格式.docx

上传人:b****2 文档编号:15056901 上传时间:2022-10-27 格式:DOCX 页数:14 大小:148.27KB
下载 相关 举报
计算机实验报告经典Word文档格式.docx_第1页
第1页 / 共14页
计算机实验报告经典Word文档格式.docx_第2页
第2页 / 共14页
计算机实验报告经典Word文档格式.docx_第3页
第3页 / 共14页
计算机实验报告经典Word文档格式.docx_第4页
第4页 / 共14页
计算机实验报告经典Word文档格式.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

计算机实验报告经典Word文档格式.docx

《计算机实验报告经典Word文档格式.docx》由会员分享,可在线阅读,更多相关《计算机实验报告经典Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。

计算机实验报告经典Word文档格式.docx

(4)以邻接链表为存储结构实现有向图的广度遍历;

三:

实验程序及结果

(1)邻接矩阵建立图:

#include<

stdio.h>

malloc.h>

#defineVEXTYPEint/*顶点的类型设为整型*/

#defineMAXSIZE100/*数组最多存储单元为100*/

#defineADJTYPEint/*边的类型为整型*/

typedefstruct{

VEXTYPEvexs[MAXSIZE];

/*一维数组存储顶点信息*/

ADJTYPEarcs[MAXSIZE][MAXSIZE];

/*二维数组存储邻接矩阵*/

intvexnum,arcnum;

/*顶点和边的数目*/

}MGRAPH;

voidcreate_graph(MGRAPH*g){

inti,j,k;

printf("

输入顶点数和边数:

"

);

scanf("

%d,%d"

&

i,&

j);

g->

vexnum=i;

arcnum=j;

for(i=1;

i<

=g->

vexnum;

i++){/*0单元空出不存储顶点的信息*/

printf("

第%d个顶点的信息:

i);

scanf("

%d"

g->

vexs[i]);

}

i++){/*初始化邻接矩阵*/

for(j=1;

j<

j++)

g->

arcs[i][j]=0;

for(k=1;

k<

arcnum;

k++){

输入第%d条边的起点和终点的编号:

k);

while(i<

1||i>

vexnum||j<

1||j>

vexnum){

printf("

编号超出范围,请重新输入!

scanf("

}

g->

arcs[i][j]=1;

arcs[j][i]=1;

}

main(){

MGRAPHgraph,*g;

inti,j;

g=&

graph;

create_graph(g);

顶点信息为:

\n"

i++){/*输出顶点信息*/

g->

该图的邻接矩阵为:

i++){/*输出邻接矩阵*/

arcs[i][j]);

结果:

(2.)邻接链表建立图:

#defineMAXSIZE100

#defineVEXTYPEint

typedefstructadjnode{

VEXTYPEadjvex;

structadjnode*next;

}ADJNODE;

VEXTYPEvertex;

ADJNODE*link;

}VEXNODE;

VEXNODEadjlist[MAXSIZE];

}ADJGRAPH;

voidcreate_adjgraph(ADJGRAPH*g){/*用邻接链表建立有向图*/

ADJNODE*p;

输入顶点数和边数:

i++){

请输入顶点的信息:

adjlist[i].vertex);

adjlist[i].link=NULL;

请输入第%d条边的起点和终点:

j,&

k);

while(j<

vexnum||k<

1||k>

编号超出范围,请重新输入!

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

p->

adjvex=k;

next=g->

adjlist[j].link;

adjlist[j].link=p;

ADJGRAPHgraph,*g;

inti;

create_adjgraph(g);

该有向图的邻接链表为:

i++){/*输出邻接链表*/

p=g->

adjlist[i].link;

if(p!

=NULL){

%3d|"

while(p!

printf("

->

%5d"

p->

adjvex);

p=p->

next;

}

^\n"

else

%3d|^\n"

(3)广度优先遍历:

(此程序用到队列的基本操作,写在头程序中了)

源程序:

#include"

seqqueue.h"

voidcreate_adjgraph(ADJGRAPH*g){/*用邻接链表建立图*/

intvisited[MAXSIZE]={0};

voidbfs(ADJGRAPH*g,inti){/*从顶点i开始进行广度优先搜索*/

SEQQUEUE*q,queue;

intv;

q=&

queue;

Init_Queue(q);

visited[i]=1;

%4d"

Add_Queue(q,i);

while(!

Queue_Empty(q)){

v=Gethead_Queue(q);

Del_Queue(q);

adjlist[v].link;

while(p!

if(visited[p->

adjvex]==0){

visited[p->

adjvex]=1;

adjlist[p->

adjvex].vertex);

Add_Queue(q,p->

p=p->

ADJGRAPH*g,adjg;

adjg;

广度遍历的结果:

if(visited[i]!

=1)

bfs(g,i);

头程序:

seqqueue.h

#definedatatypeint

datatypedata[MAXSIZE];

/*队列的最大存储空间*/

intfront,rear;

/*队头队尾指针*/

}SEQQUEUE;

SEQQUEUE*q;

voidInit_Queue(SEQQUEUE*q){/*初始化队列*/

q->

front=0;

rear=0;

intQueue_Empty(SEQQUEUE*q){/*判断队空操作*/

if(q->

rear==q->

front)

return1;

else

return0;

voidAdd_Queue(SEQQUEUE*q,datatypex){/*入队操作*/

if((q->

rear+1)%MAXSIZE==q->

Queuefull\n"

else{

q->

rear=(q->

rear+1)%MAXSIZE;

data[q->

rear]=x;

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

当前位置:首页 > 考试认证 > 公务员考试

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

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