图的邻接表存储表示
2016-11-18 15:27
267 查看
#include <iostream> using namespace std; #define MAX_VERTEX class ArcNode { public: int adjvex; ArcNode *next; ArcNode() :next(NULL),adjvex(-1) {} }; class VNode { public: char data; ArcNode *first; VNode():first(new ArcNode()){} }; class Map { VNode *vertices; int vexnum; int arcnum; public: Map(int vnum, int anum) { vexnum = vnum; arcnum = anum; vertices = new VNode[vexnum]; } ~Map() { delete []vertices; } void CreateAdjList(); void Display(); }; void Map::CreateAdjList() { for (int i = 0; i < vexnum; i++) vertices[i].data = i + 'A'; char h, t; for (int i = 0; i < arcnum; i++) { cin >> h; cin >> t; ArcNode *p = vertices[h - 'A'].first; while (p->next) { p = p->next; } p->next = new ArcNode(); p->adjvex = t - 'A'; } } void Map::Display() { for (int i = 0; i < vexnum; i++) { ArcNode *p = vertices[i].first; cout << i << ' ' << vertices[i].data<<'-'; if (!p) return; while (p->next) { cout << p->adjvex << '-'; p = p->next; } cout<<'^' << endl; } } int main() { int t; cin >> t; while (t--) { int vnum, anum; cin >> vnum >> anum; Map map(vnum, anum); map.CreateAdjList(); map.Display(); } system("pause"); } /**********输入 1 5 7 A B A D A E B D C B C E E D ***********/ /*********输出 0 A-1-3-4-^ 1 B-3-^ 2 C-1-4-^ 3 D-^ 4 E-3-^ ************/
相关文章推荐
- 图的邻接表存储表示示例讲解
- 图(网)的存储结构(数组存储表示即邻接矩阵、邻接表)
- 图的邻接表存储表示(C)
- C语言:实现图的邻接表存储表示
- 图的邻接表存储结构表示法
- 20.图的存储表示-----------------邻接表
- 图的基本概念;图的存储表示:邻接矩阵、邻接表
- 图 - 图的存储结构 - 邻接表表示法
- 图的存储表示--邻接表实现
- 图算法------图的邻接表表示法(图的链式存储)
- 数据结构之---C语言实现图的邻接表存储表示
- 数据结构:图的邻接表存储表示
- 图的邻接表存储表示 图的深度优先遍历和图的广度优先遍历
- 数据结构之图的存储表示(邻接矩阵、邻接表和边集数组)
- 数据结构之---C语言实现图的邻接表存储表示
- 图(网)的存储结构(数组存储表示即邻接矩阵、邻接表)
- 第七章(2).图的邻接表存储表示
- 数据结构编程笔记十九:第七章 图 图的邻接表存储表示及各基本操作的实现
- 多维数组的存储表示与实现--自己写数据结构
- 无向图的深度优先搜索(采用邻接表存储)C++实现