云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 数据结构实验指导书

数据结构实验指导书

  • 62 次阅读
  • 3 次下载
  • 2026/4/23 10:30:47

int i, v; EDGENODE *p;

LINKQUEUE que, *q;

q = &que;

initlinkqueue(q);

for(i = 0; i < adjg.vexnum; i++)

visited[i] = 0; /*visited数组初始化,均置0*/ visited[vi-1] = 1; /*从编号为vi的顶点出发,visited数组对应置1*/ printf(\输出vi顶点*/ enlinkqueue(q,vi); /*vi顶点入队列*/

while(!emptylinkqueue(q)) /*队列不空,继续进行遍历*/ {v = dellinkqueue(q); /*取队头元素放入v变量中*/ v --;

p = adjg.adjlist[v].link;

while(p != NULL) /*对应单链表不空,进行广度遍历*/ {if(visited[p->adjvex] == 0) {visited[p->adjvex] = 1;

printf(\

enlinkqueue(q, (p->adjvex)+1);} /*遍历到的结点编号入队列*/ p = p->next;} } }

main() { ADJGRAPH ag; int j;

printf(\连通图的广度遍历\\n\

ag = creat_adjgraph(); /*建立连通图的邻接链表结构*/ printf(\输入广度遍历起始顶点(1 -- %d) : \ scanf(\

printf(\广度遍历结果序列 : \

bfs(ag,j); /*连通图的广度遍历算法*/ printf(\}

深度优先遍历程序清单:

#include #include \#include

int visited[MAXLEN];

29

ADJGRAPH creat_adjgraph() {

EDGENODE *p; int i, s, d; ADJGRAPH adjg;

adjg.kind = 2;

printf(\输入顶点数和边数(用逗号隔开) : \scanf(\

adjg.vexnum = s; /*存放顶点数在adjg.vexnum中 */ adjg.arcnum = d; /*存放边点数在adjg.arcnum中*/ printf(\

for(i = 0; i < adjg.vexnum; i++) /*输入顶点的值*/ {printf(\输入顶点 %d 的值 : \ scanf(\ fflush(stdin);

adjg.adjlist[i].link = NULL;} printf(\

for(i = 0; i < adjg.arcnum; i++)

{printf(\输入第 %d 条边的起始顶点和终止顶点(用逗号隔开): \

scanf(\&s, &d); /*输入边的起始顶点和终止顶点*/ fflush(stdin);

while(s < 1 || s > adjg.vexnum || d < 1 || d > adjg.vexnum) { printf(\输入错,重新输入: \ scanf(\ s --; d --;

p = malloc(sizeof(EDGENODE)); /*建立一个和边相关的结点*/ p->adjvex = d;

p->next = adjg.adjlist[s].link; /*挂到对应的单链表上*/ adjg.adjlist[s].link = p;

p = malloc(sizeof(EDGENODE)); /*建立另一个和边相关的结点*/ p->adjvex = s;

p->next = adjg.adjlist[d].link; /*挂到对应的单链表上*/ adjg.adjlist[d].link = p;} return adjg; }

void dfs(ADJGRAPH adjg, int v){

/*连通图的深度遍历算法:从v顶点出发*/ EDGENODE *p;

visited[v - 1] = 1; /*从编号为v的顶点出发,visited数组对应置1*/

30

v --;

printf(\输出v顶点*/

p = adjg.adjlist[v].link; /*取单链表的第一个结点*/ while(p != NULL) /*对应单链表不空,进行遍历*/ { if(visited[p->adjvex] == 0) /*如果有未被访问过的结点*/ dfs(adjg, (p->adjvex)+1); /*递归调用深度遍历算法*/

p = p->next;} /*取单链表的下一个结点*/ }

main() {

ADJGRAPH ag; int i;

printf(\连通图的深度遍历\\n\

ag = creat_adjgraph(); /*建立连通图的邻接链表结构*/ for(i = 0; i < ag.vexnum; i++) /*visited数组初始化,均置0*/ visited[i] = 0;

printf(\输入深度遍历起始顶点(1 -- %d) : \ scanf(\

printf(\深度遍结果序列 : \

dfs(ag,i); /*连通图的深度遍历算法*/ printf(\}

31

搜索更多关于: 数据结构实验指导书 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

int i, v; EDGENODE *p; LINKQUEUE que, *q; q = &que; initlinkqueue(q); for(i = 0; i < adjg.vexnum; i++) visited[i] = 0; /*visited数组初始化,均置0*/ visited[vi-1] = 1; /*从编号为vi的顶点出发,visited数组对应置1*/ printf(\输出vi顶点*/ enlinkqueue(q,vi); /*vi顶点入队列*/ while(!emptylinkqueue(q))

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com