以下是作业,用它用实现用邻接矩阵的方式来进行广度优先和深度优先的遍历。
代码比较简单,用了两个小时来写出来。
/**用邻接矩阵的方式来储存图,用广度优先方式进行遍历 **/
#include "stdio.h"
#define max_matrix 10
int visited[max_matrix],matrix[max_matrix][max_matrix];
int n;
int board_traverse();
int main()
{
int i,j;
scanf("%d",&n);
if (n<1)
{
printf("n must be >1\n");
exit(0);
}
if (n>max_matrix)
{
printf("n must be <%d\n",max_matrix);
exit(0);
}
for (i=0;i<n;i++)
{
visited[i]=0;
for (j=0;j<n;j++)
matrix[i][j] = 0;
}
while (scanf("%d %d",&i,&j)==2)
{
matrix[i-1][j-1]=1;
}
for(i=0;i<n;i++)
{
for (j=0;j<n;j++)
printf("%d ",matrix[i][j]);
printf("\n");
}
printf("1 ");
board_traverse(0);
}
int board_traverse()
{
int temp,i,j,ma_j,ma_i;
for (ma_i=0;ma_i<n;ma_i++)
for (ma_j=ma_i;ma_j<n;ma_j++)
if (matrix[ma_i][ma_j] && visited[ma_j]==0)
{
printf("%d ",ma_j+1);
visited[ma_j]=1;
}
}
/**用邻接矩阵的方式来储存图,用深度优先方式进行遍历 **/
#include "stdio.h"
#define max_matrix 10
int visited[max_matrix],matrix[max_matrix][max_matrix];
int n;
int deep_traverse(int);
int main()
{
int i,j;
scanf("%d",&n);
if (n<1)
{
printf("n must be >1\n");
exit(0);
}
if (n>max_matrix)
{
printf("n must be <%d\n",max_matrix);
exit(0);
}
for (i=0;i<n;i++)
{
visited[i]=0;
for (j=0;j<n;j++)
matrix[i][j] = 0;
}
while (scanf("%d %d",&i,&j)==2)
{
matrix[i-1][j-1]=1;
}
for(i=0;i<n;i++)
{
for (j=0;j<n;j++)
printf("%d ",matrix[i][j]);
printf("\n");
}
printf("1->");
deep_traverse(0);
}
int deep_traverse(int ma_i)
{
int temp,i,j,ma_j;
ma_j = ma_i;
while (ma_j<n)
{
if (matrix[ma_i][ma_j] && visited[ma_j]==0)
{
printf("%d->",ma_j+1);
visited[ma_j]=1;
deep_traverse(ma_j);
}
ma_j++;
}
}
分享到:
相关推荐
在本实验报告中,主题是图的遍历操作,主要涉及了有向图和无向图的概念、图的存储结构(邻接矩阵和邻接链表)、深度优先搜索(DFS)以及广度优先搜索(BFS)算法。这些概念和技术在计算机科学,特别是算法和数据结构...
2. **掌握图的表示方法**:如邻接矩阵和邻接表两种主要的数据结构实现。 3. **学习图的遍历算法**:包括深度优先搜索(DFS)和广度优先搜索(BFS)。 4. **实践图的应用**:通过具体案例,如网络路由或社交网络分析...
4. **图**:阐述图的邻接矩阵和邻接表表示法,以及图的遍历(深度优先搜索和广度优先搜索)和最短路径算法(如Dijkstra算法和Floyd算法)的C语言实现。 5. **排序与查找**: - **排序算法**:包括冒泡排序、选择...
C语言实现图可以通过邻接矩阵或邻接表,例如深度优先搜索(DFS)和广度优先搜索(BFS)是图的基本遍历算法,可以在C语言中用递归或队列实现。 3. **查找算法**:查找是寻找特定元素的过程。线性查找是最基础的方法...
C语言中用邻接矩阵或邻接表来表示图,并实现DFS(深度优先搜索)和BFS(广度优先搜索)等算法。 7. **散列表(哈希表)**:散列表通过哈希函数将数据映射到数组中的特定位置,实现快速查找。解决冲突的方法有开放...
图的遍历(深度优先和广度优先)和最短路径算法(如Dijkstra和Floyd)是重要部分。 7. **哈希表**:通过哈希函数实现快速查找,常用于数据库索引和缓存。书中会讲解冲突解决策略(如开放寻址法和链地址法)。 8. *...
数据结构是计算机科学中的核心课程,它探讨了如何有效地存储和组织数据,以便进行高效的检索、插入和删除等操作。严慰民版的《数据结构》是一本深受学生和专业人士欢迎的教材,它深入浅出地讲解了各种数据结构及其...
本课件是一个动态演示数据结构算法执行过程的辅助教学软件, 它可适应读者对算法的输入数据和过程执行的控制方式的不同需求, 在计算机的屏幕上显示算法执行过程中数据的逻辑结构或存储结构的变化状况或递归算法执行...
Java中可以用邻接矩阵或邻接表来存储图。 2. 深度优先搜索(DFS)和广度优先搜索(BFS):两种基本的图遍历算法,用于寻找路径、判断连通性等。 3. 最短路径算法:Dijkstra算法和Floyd-Warshall算法用于找到图中两...
本课件是一个动态演示数据结构算法执行过程的辅助教学软件, 它可适应读者对算法的输入数据和过程执行的控制方式的不同需求, 在计算机的屏幕上显示算法执行过程中数据的逻辑结构或存储结构的变化状况或递归算法执行...
图的遍历算法(深度优先搜索和广度优先搜索)是解决问题的关键。 9. **排序算法**:包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等,它们各有优劣,理解其原理并能灵活选择是提升程序效率的重要...
- 数组是Java中用于存储同类型元素的一种数据结构。数组长度固定,可以通过索引访问数组中的元素。 **1.2 Java的面向对象特性** - **1.2.1 类与对象** - 类是具有相似属性和行为的对象的抽象描述。对象是类的一...
本课件是一个动态演示数据结构算法执行过程的辅助教学软件, 它可适应读者对算法的输入数据和过程执行的控制方式的不同需求, 在计算机的屏幕上显示算法执行过程中数据的逻辑结构或存储结构的变化状况或递归算法执行...
递归通常用于深度优先搜索(DFS)或广度优先搜索(BFS)等算法,但在这里,我们可能会采用迭代的方式来实现,比如使用栈(stack)数据结构来模拟回溯的过程。VC6.0是Visual C++ 6.0的简称,这是一个较老但仍然被一些...
同时,也可能讨论图的矩阵表示(邻接矩阵和邻接表),这些数据结构的选择直接影响算法的效率。 "递归论.pdf"文档则可能深入讲解递归函数的性质,如康托尔的递归定理、图灵机模型、停机问题以及递归类型的分类。理解...
6. 深度优先搜索(DFS)与广度优先搜索(BFS):用于遍历或搜索树或图,如迷宫问题。 7. 字符串匹配:KMP算法、Rabin-Karp算法等,用于高效地查找字符串中的子串。 8. 排序算法:冒泡排序、插入排序、选择排序、...
3. **搜索算法(Search Algorithm)**:搜索算法如深度优先搜索(DFS)和广度优先搜索(BFS)用于遍历或搜索图或树结构。MATLAB中的cell数组和stack数据结构可以辅助实现这些搜索策略。 4. **蒙特卡洛方法(Monte ...
图的遍历算法包括深度优先搜索(DFS)和广度优先搜索(BFS),C++中可以借助邻接矩阵或邻接表来实现。 此外,C++还提供了集合(set)和映射(map)等高级数据结构,它们都是基于红黑树实现的。集合中元素唯一且有序...