建立邻接矩阵,邻接表,并输出
时间: 2024-12-28 17:31:30 浏览: 1
在图论中,有几种常见的数据结构用于表示图,其中最常见的是邻接矩阵和邻接表。
1. **邻接矩阵**:这是一种二维数组,其行代表图中的每个顶点,列表示每个顶点与其相邻的所有顶点。对于无向图,矩阵是对称的;如果(i, j)位置的值为1,则表示顶点i与顶点j之间有一条边。例如,如果有一个包含三个顶点A、B、C的图,邻接矩阵可能是这样的:
| A | B | C |
|---|---|---|
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
2. **邻接表**:则是一个链表集合,每个顶点对应一个链表,链表中的元素是该顶点的所有邻居。邻接表更节省空间,特别是当图存在大量稀疏边(即大部分顶点之间的连接较少)时。例如,同样那个图,邻接表可能表示为:
- A 的链表:[B, C]
- B 的链表:[A, C]
- C 的链表:[A, B]
输出邻接矩阵或邻接表的具体形式取决于使用的编程语言。以下是Python的一个简单例子,展示如何输出邻接矩阵:
```python
# 假设我们有如上图的图,用字典存储邻接矩阵
adj_matrix = {
'A': ['B', 'C'],
'B': ['A', 'C'],
'C': ['A', 'B']
}
for vertex in adj_matrix:
print(f"{vertex}: {adj_matrix[vertex]}")
```
而输出邻接表则需要遍历链表:
```python
def output_adj_list(graph):
for node, neighbors in graph.items():
print(f"{node}: {neighbors}")
output_adj_list(adj_matrix)
```
阅读全文