方法1:采用邻接表存储结构,按照堆栈的实现。
Typedef struct node
{ int adjvex;
Struct node *next;
}EdgeNode;
Typedef structvnode
{char vertex;
EdgeNode *firstedge;
}VertexNode;
Typedef VertexNode AgjList[100];
Type struct{
AdjList adjlist;
Int n,e;
}ALGraph;
#include <stdio.h>
#include <stdlib.h>
#include<iostream>
using namespace std;
#define MAX 30
int indegree[MAX];//用来存储所有节点的入度之和
typedef struct ArcNode {
struct ArcNode *nextarc;
int adjvex;
}ArcNode;
typedef struct {
ArcNode *firstarc;
char data;
}VNode, Vertice[MAX];
typedef struct {
int vexnum, arcnum;
Vertice vex;
}ALGraph;
typedef struct {
int top;
int *base;
int stacksize;
}SqStack;
int LocateVex(ALGraph G, char v) {
for (int i = 0; i < G.vexnum; i++) {
if (v == G.vex[i].data)
return i;
}
return -1;
}
void CreateALGraph(ALGraph &G) {
int i, j, k;
char v1, v2;
ArcNode *p, *s;
printf("输入节点和边的数目:\n");
cin >> G.vexnum >> G.arcnum;
printf("输入结点:\n");
getchar();