用c++写个拓扑图程序
时间: 2023-05-11 15:03:47 浏览: 359
好的,我可以为您提供一个基本的拓扑图程序。以下是示例代码:
#include <iostream>
#include <vector>
using namespace std;
// 定义节点结构体
struct Node {
int id;
vector<Node*> neighbors;
};
// 定义拓扑图类
class Topology {
public:
// 添加节点
void addNode(int id) {
Node* node = new Node;
node->id = id;
nodes.push_back(node);
}
// 添加边
void addEdge(int id1, int id2) {
Node* node1 = getNodeById(id1);
Node* node2 = getNodeById(id2);
node1->neighbors.push_back(node2);
}
// 打印拓扑图
void print() {
for (int i = 0; i < nodes.size(); i++) {
Node* node = nodes[i];
cout << "Node " << node->id << " neighbors: ";
for (int j = 0; j < node->neighbors.size(); j++) {
cout << node->neighbors[j]->id << " ";
}
cout << endl;
}
}
private:
// 根据节点id获取节点指针
Node* getNodeById(int id) {
for (int i = 0; i < nodes.size(); i++) {
if (nodes[i]->id == id) {
return nodes[i];
}
}
return NULL;
}
vector<Node*> nodes;
};
int main() {
// 创建拓扑图
Topology topology;
// 添加节点
topology.addNode(1);
topology.addNode(2);
topology.addNode(3);
topology.addNode(4);
// 添加边
topology.addEdge(1, 2);
topology.addEdge(1, 3);
topology.addEdge(2, 4);
topology.addEdge(3, 4);
// 打印拓扑图
topology.print();
return 0;
}
阅读全文