图的邻接表存储表示

    xiaoxiao2021-12-03  41

    #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-^ ************/
    转载请注明原文地址: https://ju.6miu.com/read-680026.html

    最新回复(0)