输入邻接表程序的文字描述如下:
输入顶点数目和边数
首先输入顶点的数目 `n` 和边的数目 `m`。
输入每条边的信息
接下来输入 `m` 行,每行输入一条边的信息,包括边的起点 `from`、终点 `to` 和边的权重 `w`。
初始化
初始化一个足够大的数组 `e` 来存储所有的边,以及一个数组 `pre` 来记录每个顶点的直接前驱节点。
输出每个顶点的出度和入度
最后输出每个顶点的出度和入度。
示例输入输出
输入示例:
```
5 6
1 2 3
1 3 4
2 3 5
2 4 6
3 4 7
4 5 8
```
输出示例:
```
顶点 0 的出度: 2
顶点 0 的入度: 0
顶点 1 的出度: 2
顶点 1 的入度: 1
顶点 2 的出度: 2
顶点 2 的入度: 2
顶点 3 的出度: 2
顶点 3 的入度: 2
顶点 4 的出度: 2
顶点 4 的入度: 1
```
代码示例
```c
include include include define MAXN 100 typedef struct { int to; int w; int next; } Edge; int main() { int n, m; scanf("%d %d", &n, &m); Edge e[MAXN]; int pre[MAXN]; memset(pre, -1, sizeof(pre)); for (int i = 0; i < m; i++) { int from, to, w; scanf("%d %d %d", &from, &to, &w); e[i].to = to; e[i].w = w; e[i].next = pre[from]; pre[from] = i; } // 输出每个顶点的出度和入度 for (int i = 0; i < n; i++) { int out_degree = 0, in_degree = 0; for (int j = pre[i]; j != -1; j = e[j].next) { out_degree++; } for (int j = 0; j < m; j++) { if (e[j].to == i) { in_degree++; } } printf("顶点 %d 的出度: %d\n", i, out_degree); printf("顶点 %d 的入度: %d\n", i, in_degree); } return 0; } ``` 这个程序首先读取顶点数 `n` 和边数 `m`,然后读取每条边的信息并构建邻接表。最后,它输出每个顶点的出度和入度。