邻接表
邻接表(数组与链表相结合的存储方法)的结构类似于树的存储–孩子表示法。
#include
typedef struct FNode{
char data;
struct DNodefirstedge; //firstedge指向边表的第一个节点
}FNode;
typedef struct DNode{
int adjvex; //边表结点的内容
int weight; //权
DNodenext;
}DNode;
class AlGraph{
public:
AlGraph();
~AlGraph();
public:
AlGraph(const size_t&a, const size_t&b) :numVertexes(a), numEdges(b){ CreatAlGraph(); };
void traverse(); //遍历
private:
static const size_t Maxsize = 100;
FNode fnode[Maxsize]; 顶点表结构体数组
const size_t numVertexes = 0; //图中顶点数
const size_t numEdges = 0; //图中边数
void CreatAlGraph(); //创造一个邻接表
};
void AlGraph::CreatAlGraph()
{
char ch;
int ai,bj;
for (int i = 0; i < numVertexes; ++i)
{
std::cout << “please enetr Vertex information:”;
std::cin >> ch;
fnode[i].data = ch; //初始化顶点的内容
fnode[i].firstedge = nullptr; //初始化顶点表的指针
}
for (int j = 0; j < numEdges; ++j)
{
std::cout << "please enetr (Vi,Vj)" << "\n";
std::cin >> ai>>bj;
DNode*e = new DNode;//创建一个边表结点(向内存中申请空间)
e->adjvex = j; //邻接序号为j;
e->next= fnode[j].firstedge; // 将e指针指向当前顶点指向的结点 (类似创建链表中的头插法);
fnode[j].firstedge = e; //将当前顶点的指针指向e;
DNode*s = new DNode;
s->adjvex = i;
s->next = fnode[i].firstedge;
fnode[i].firstedge = s;
}
}
void AlGraph::traverse()
{
DNodee;
for (int i = 0; i < numVertexes; ++i)
{
e = fnode[i].firstedge;
if(e->next != nullptr)
{
std::cout << e->adjvex << " " << e->weight;
e = e->next;
}
}
}
AlGraph::~AlGraph()
{
DNodee;
for (int i = 0; i < numVertexes; ++i)
{
e = fnode[i].firstedge;
if (e)
{
delete e;
e = e->next;
}
}
}
int main(int argc, char**argv)
{
const size_t numvertexes = 4;
const size_t numedges = 5;
AlGraph algraph(numvertexes, numedges);
algraph.traverse();
return 0;
}
- ios 开发,通讯录信息调用常用方法,这个比较全,不用再整理了
- 深入理解和应用Float属性
- 堆和栈的区别
- 深入理解和应用display属性(二)
- Philip S.Yu 讲的广度学习到底是什么?
- Kubernetes服务网格(第10部分):服务网格API
- 刚刚,同程与艺龙宣布合并!去你的大数据!
- 从蓝光到4K,腾讯视频高码率下载背后的技术
- 从开发者的角度比较IAAS与PAAS
- 图灵机器人郭家:以语义技术为核心驱动力,让机器更好地理解世界
- 静态条码设支付上限,500元封顶,海外支付尚未通知
- 如何自动地将代码从Git平台部署至组件容器
- 聂卫平说过人工智能不会取代人类 只会让我们生活的更加美好
- 万达裁员遭人大教授怒怼:员工如告了 王健林赔不少
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ubuntu E: 无法获得锁 /var/lib/dpkg/lock-frontend – open (11: 资源暂时不可用)
- Ubuntu 18.04 安装MySQL时未提示输入密码的问题及解决方法
- ubuntu中修改grub的启动时间生成
- linux7下虚拟主机的三种实现方式
- 详解CentOS7下PostgreSQL 11的安装和配置教程
- CentOS下安装Memcached和PHP Memcached扩展
- Mac中文件权限查看和设置详解
- linux下open-vswitch安装卸载操作
- CentOS7安装GUI界面及远程连接的实现
- Centos7.4环境安装lamp-php7.0教程
- iOS摄像头推流(2)
- ubuntu 16.04LTS 开机启动自动更换壁纸的实现方法
- linux中Centos7的LVM磁盘扩容问题
- 如何禁止网站内容被搜索引擎收录的几种方法讲解
- Apache由http自动跳转到https的多种方法