西工大c语言大作业题目,C语言大作业西工大.pdf

实 验 报 告

课程名称 数据结构

实验项目 实现深度优先搜索与广度优先搜索算法

一、实验目的

1、通过本实验,掌握图,无向图的基本概念,掌握图的遍历;

2、掌握图的深度优先搜索(DFS)与广度优先搜索(BFS)算法。

二、实验内容

1、建立图的存储方式;

2、图的深度优先搜索算法;

3、图的广度优先搜索算法。

三、实验原理

图的遍历是图的算法中一种非常重要的算法,通过建立图的存储结构,采用深度优先搜

索与广度优先搜索算法可以进行图的遍历;

深度优先遍历是树的先根遍历的推广,是将某一条枝上的所有节点都搜索到了之后,才

转向搜索另一条枝上的所有节点;

广度优先遍历与深度优先遍历的区别在于:广度优先遍历是以层为顺序,将某一层上的

所有节点都搜索到了之后才向下一层搜索。

四、实验步骤

1.建立图的存储结构;

2.输入图的基本接点与信息,初始化图;

3.编写图的深度优先搜索(DFS)和广度优先搜索算法(BFS)程序;

4.采用菜单形式进行显示与选择。

5.测试数据和结果显示

(1)从键盘输入顶点数和边数;

(2)输入顶点信息;

(3)输入边的信息,以(a,b)的形式输入边的信息,构建一个无向图;

(4)对此无向图进行深度优先搜索和广度优先搜索,并输出正确的序列。

五、程序源代码及注释

#include

#include

#include

#define MAX_VERTEX_NUM 20

typedef struct ArcNode{

int adjvex;

struct ArcNode* nextarc;

}ArcNode;

typedef struct VNode{

char cData;

ArcNode* firstarc;

}VNode,AdjList[MAX_VERTEX_NUM];

typedef struct {

AdjList vertices;

int vexnum;

int arcnum;

}ALGraph;

typedef struct LinkNode{

ArcNode* parc;

struct LinkNode* next;

}LinkNode;

int Visited[MAX_VERTEX_NUM];

int PrintCheck(ALGraph* pag)

{

int i;

ArcNode* p;

printf("\nCheck the Graph!\n");

printf("No\tdata\tnext\tnext\t\n");

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

{

printf("%d\t%c\t",i,pag->vertices[i].cData);

p = pag->vertices[i].firstarc;

while(p)

{

printf("%d\t",p->adjvex);

p = p->nextarc;

}

printf("\n");

}

return 1;

}

int CreateGraph(ALGraph* pag,int start,int end)

{

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

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

ArcNode* p;

if(!arcNodes || !arcNodee) return 0;

arcNodes->adjvex = end;

p = pag->vertices[start].firstarc;

if(!p)

{

arcNodes->nextarc = pag->vertices[start].firstarc;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值