编写算法,从键盘读入有向图的顶点和弧,创建有向图的邻接表存储结构
时间: 2024-02-12 19:05:12 浏览: 92
以下是基于C++语言的实现,实现了从键盘读入有向图的顶点和弧,并创建了有向图的邻接表存储结构。
```c++
#include <iostream>
#include <vector>
using namespace std;
// 邻接表结构
struct node {
int v; // 该邻接点的顶点编号
int w; // 该边的权值
struct node* next; // 下一个邻接点
};
// 创建邻接表
vector<struct node*> createGraph(int n, int m) {
vector<struct node*> adjList(n+1, NULL); // 初始化邻接表
// 读入m条弧,建立邻接表
for(int i=1; i<=m; i++) {
int u, v, w;
cin >> u >> v >> w;
// 创建新的邻接点
struct node* newNode = new node;
newNode->v = v;
newNode->w = w;
newNode->next = adjList[u]; // 将新节点插入链表头部
adjList[u] = newNode; // 更新链表头
}
return adjList;
}
int main() {
int n, m;
cin >> n >> m;
vector<struct node*> adjList = createGraph(n, m);
return 0;
}
```
在上面的代码中,我们使用了`vector<struct node*>`来表示邻接表,其中每个元素代表一个顶点,指向的链表中存储该顶点的所有邻接点。在创建邻接点时,我们采用了头插法,将新的邻接点插入链表的头部,以便于后续的遍历操作。
阅读全文