C++实现有向图邻接表的构建

 更新时间:2020年04月26日 14:12:19   作者:GetoWork  
这篇文章主要为大家详细介绍了C++实现有向图邻接表的构建,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C++实现有向图邻接表的构建代码,供大家参考,具体内容如下

数据结构里面的一道基础题,分享下自己的写法,验证可跑。

#include<iostream>
#include<string>
const int MAX = 20;
using namespace std;
 
 
struct ArcNode {      //弧结点
 int adjvex = -1;     //所指顶点位置
 ArcNode *nextarc = nullptr; //下一条狐指针
 size_t info = 0;  //弧信息
};
 
 
struct VNode {      //顶点
 string data = "0";
 ArcNode *firstarc = nullptr; //第一条依附该顶点的弧的指针
};
 
 
struct Graph {      //图结构
 VNode vertices[MAX];         //全部顶点
 int vexnum, arcnum;     //顶点数和弧数
 Graph(int m, int n) :vexnum(m), arcnum(n) {};
 Graph() :vexnum(0), arcnum(0) {};
};
 
 
int main()
{
 int vnum, anum, tempanum = 0;
 cout << "输入顶点数:";
 cin >> vnum;
 cout << "输入弧数:";
 cin >> anum;
 cout << "\n\n";
 Graph G(vnum, anum);
 for (int i = 0; i != vnum; ++i) {
 cout << "输入结点" << i << "的信息:";
 cin >> G.vertices[i].data;
 if (tempanum != anum)
  cout << "输入依靠此结点的弧的信息(输入-1以停止):\n";
 else
  cout << "已输入所有弧的信息!\n";
 bool first = true;
 ArcNode *p, *temp;
 for (int j = 0; (j != anum) && (tempanum != vnum); ++j) {
  int pointto;
  cout << "输入弧" << tempanum << "所指向的顶点位置:";
  cin >> pointto;
  if (pointto == -1) break;
  else {
  ++tempanum;
  if (first == true) {
   first = false;
   G.vertices[i].firstarc = new ArcNode;
   G.vertices[i].firstarc->adjvex = pointto;
   p = G.vertices[i].firstarc;
  }
  else {
   temp = new ArcNode;
   temp->adjvex = pointto;
   p->nextarc = temp;
   p = temp;
  }
  }
 }
 cout << endl;
 }
 
 for (int i = 0; i != anum; ++i) {
 cout << "顶点" << i << ": |" << G.vertices[i].data << "|";
 if (G.vertices[i].firstarc) {
  cout << " -> " << G.vertices[i].firstarc->adjvex;
  auto pt = G.vertices[i].firstarc->nextarc;
  while (pt) {
  cout << " -> " << pt->adjvex;
  pt = pt->nextarc;
  }
  cout << "-> ^";
 }
 else
  cout << " -> ^";
 cout << endl;
 }
 return 0;
}

由于只是单纯构建基本的无权值有向图邻接表,里面的弧结构中弧信息未利用到。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 基于C++实现BMI身体质量指数计算工具

    基于C++实现BMI身体质量指数计算工具

    BMI(Body Mass Index,身体质量指数),也称为体重指数,是一种常用的衡量成人人体肥胖程度的指标,本文就来用C++编写一个简单的BMI计算工具吧
    2023-10-10
  • C语言 CRITICAL_SECTION用法案例详解

    C语言 CRITICAL_SECTION用法案例详解

    这篇文章主要介绍了C语言 CRITICAL_SECTION用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • C++代码实现逆波兰式

    C++代码实现逆波兰式

    这篇文章主要为大家详细介绍了C++代码实现逆波兰式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • C++实现路口交通灯模拟系统

    C++实现路口交通灯模拟系统

    这篇文章主要为大家详细介绍了C++实现路口交通灯模拟系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • C++虚函数表的原理与使用解析

    C++虚函数表的原理与使用解析

    对C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。本文就将详细讲讲虚函数表的原理与使用,需要的可以参考一下
    2022-04-04
  • C++之openFrameworks框架介绍

    C++之openFrameworks框架介绍

    本章我们将介绍一个非常好用的跨平台的 C++开源框架 openFrameworks。它是一个开源的跨平台的C++工具包,方便开发者创建出一个更简单和直观的框架,擅长开发图像和动画,感兴趣的同学可以参考一下
    2023-05-05
  • C/C++读取配置文件的方式小结

    C/C++读取配置文件的方式小结

    这篇文章主要为大家详细介绍了C/C++中读取配置文件的几种常见方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-04-04
  • 简单讲解哈希表

    简单讲解哈希表

    本文主要介绍了哈希表简单知识及C语言实现哈希表实例,文中利用图片以及代码简单讲解了相关知识,感兴趣的小伙伴可以多多学习这篇文章
    2021-09-09
  • C++排序算法之插入排序

    C++排序算法之插入排序

    这篇文章主要为大家详细介绍了C++排序算法之插入排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • OpenCV图像算法实现图像切分图像合并示例

    OpenCV图像算法实现图像切分图像合并示例

    这篇文章主要为大家介绍了python图像算法OpenCV实现图像切分图像合并操作示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06

最新评论