/*#include<stdio.h>
#include<stdlib.h>
#define MAX_VALUE 10
typedef struct EdgeNode{//边顶点
int index;//该顶点的下标
struct EdgeNode*next;//存储下一个边顶点
}EdgeNode;
typedef struct HeadNode{//表结点
char data;
EdgeNode*edgenode;
}HeadNode,AdjacencyList[MAX_VALUE];
typedef struct Graph {
AdjacencyList list;
int vexnum;
int edgenum;//边数
}Graph;
int locate(Graph G, char v) {
int i;
for (i = 0;i < G.vexnum;i++) {
if (G.list[i].data == v)
return i;
}
return -1;
}
//构造邻接表图
Graph* CreatGraph() {
Graph* G;
char v;
G = (Graph*)malloc(sizeof(Graph));
G->edgenum = 0;
G->vexnum = 0;
}*/
#include<iostream>
using namespace std;
#define MAXNUM 100
char visited[MAXNUM];
typedef struct ArcNode { //边节点
int adjvex;//该弧指向的顶点的位置
struct ArcNode *nextarc;//指向下一条弧的指针
}ArcNode;
typedef struct { //顶点信息
char data;//顶点信息
ArcNode *firstarc;//指向第一条依附该顶点的弧
}AdjList[MAXNUM];
typedef struct { //邻接表
AdjList vertices;
int vexnum, arcnum;
}ALGraph;
int LocateVex(ALGraph G, char v) {
for (int i = 0; i < G.vexnum; i++) {
if (G.vertices[i].data == v)return i;
}
return -1;
}
int CreatUDG(ALGraph &G) {
//创建无向图
char v1, v2;
cout << "请输入顶点数和边数:";
cin >> G.vexnum >> G.arcnum;
cout << "请依次输入顶点:";
for (int i = 0;i < G.vexnum;i++)
{
cin >> G.vertices[i].data;
G.vertices[i].firstarc = NULL;
}
cout << "请依次输入邻接边:"<<endl;
for (int k = 0;k < G.vexnum;k++) {
cin >> v1 >> v2;
int i = LocateVex(G, v1);
int j = LocateVex(G, v2);
ArcNode *p1=
}
}