用数据结构c语言代码表示在邻接矩阵里两个顶点是否有边
时间: 2023-12-17 08:04:07 浏览: 70
假设邻接矩阵是一个二维数组,名为adjMatrix,其中adjMatrix[i][j]表示从顶点i到顶点j是否有边。如果adjMatrix[i][j]的值为1,则表示有边;如果为0,则表示没有边。
那么判断顶点i到顶点j是否有边的代码如下:
```
if(adjMatrix[i][j] == 1){
printf("顶点%d到顶点%d有边\n", i, j);
}
else{
printf("顶点%d到顶点%d没有边\n", i, j);
}
```
其中,printf语句可以根据实际情况进行修改,例如输出布尔值等。
相关问题
C语言用邻接矩阵实现六个顶点十条边的图的全代码
以下是C语言用邻接矩阵实现六个顶点十条边的图的完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define V 6
void addEdge(int graph[][V], int src, int dest) {
// Add edge from src to dest
graph[src][dest] = 1;
// Add edge from dest to src
graph[dest][src] = 1;
}
void printGraph(int graph[][V]) {
int i, j;
for (i = 0; i < V; i++) {
for (j = 0; j < V; j++) {
printf("%d ", graph[i][j]);
}
printf("\n");
}
}
int main() {
int graph[V][V] = { {0, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 0, 1},
{0, 1, 0, 1, 1, 0},
{0, 1, 1, 0, 1, 1},
{0, 0, 1, 1, 0, 1},
{0, 1, 0, 1, 1, 0} };
addEdge(graph, 0, 1);
addEdge(graph, 0, 2);
addEdge(graph, 1, 2);
addEdge(graph, 1, 3);
addEdge(graph, 2, 3);
addEdge(graph, 3, 4);
addEdge(graph, 4, 5);
addEdge(graph, 3, 5);
addEdge(graph, 1, 5);
addEdge(graph, 2, 4);
printGraph(graph);
return 0;
}
```
这段代码创建了一个有6个顶点和10条边的图,并且用邻接矩阵来表示它。我们使用一个二维数组`graph`来存储矩阵,其中`graph[i][j]`表示从顶点`i`到顶点`j`是否有边。函数`addEdge()`用于添加边,它将`graph[src][dest]`和`graph[dest][src]`的值都设置为1。在`main()`函数中,我们创建了一个包含10条边的图,并打印了它的邻接矩阵表示。函数`printGraph()`用于打印矩阵,它遍历整个数组并打印每个元素。
c语言实现图的邻接矩阵的存储 编写程序,输入顶点的个数、边的个数、每个顶点的值、 每一条边及其权值,建立带权无向图 G 的邻接矩阵,并输出其邻接矩阵。每个顶点的数据为一个字符
好的,下面是 C 语言实现图的邻接矩阵存储并输出的程序:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_VERTEX_NUM 100 // 最大顶点数
// 定义图的邻接矩阵结构体
typedef struct {
char vertex[MAX_VERTEX_NUM]; // 存储顶点数据
int arc[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; // 存储边的权值
int vertex_num; // 顶点个数
int edge_num; // 边的个数
} Graph;
// 创建图的邻接矩阵
void createGraph(Graph* G) {
printf("请输入顶点个数和边的个数:\n");
scanf("%d%d", &G->vertex_num, &G->edge_num);
getchar(); // 去掉缓冲区中的换行符
printf("请输入每个顶点的值:\n");
for (int i = 0; i < G->vertex_num; i++) {
scanf("%c", &G->vertex[i]);
getchar(); // 去掉缓冲区中的换行符
}
// 初始化邻接矩阵
for (int i = 0; i < G->vertex_num; i++) {
for (int j = 0; j < G->vertex_num; j++) {
G->arc[i][j] = 0;
}
}
// 输入每一条边及其权值
printf("请输入每一条边及其权值:\n");
for (int i = 0; i < G->edge_num; i++) {
char v1, v2;
int weight;
printf("请输入第%d条边的两个顶点和权值:\n", i + 1);
scanf("%c%c%d", &v1, &v2, &weight);
getchar(); // 去掉缓冲区中的换行符
int index1, index2;
// 查找顶点 v1 和 v2 在顶点数组中的下标
for (int j = 0; j < G->vertex_num; j++) {
if (G->vertex[j] == v1) {
index1 = j;
}
if (G->vertex[j] == v2) {
index2 = j;
}
}
// 将边的权值存入邻接矩阵中
G->arc[index1][index2] = weight;
G->arc[index2][index1] = weight;
}
}
// 输出图的邻接矩阵
void printGraph(Graph G) {
printf("图的邻接矩阵为:\n");
for (int i = 0; i < G.vertex_num; i++) {
for (int j = 0; j < G.vertex_num; j++) {
printf("%d ", G.arc[i][j]);
}
printf("\n");
}
}
int main() {
Graph G;
createGraph(&G);
printGraph(G);
return 0;
}
```
希望能对你有所帮助!
阅读全文