文档介绍:韩山师范学院实验题目: 拓扑排序算法实现班级: 2015 级软工班作者:黄俊聪#include<iostream> using namespace std; #define MVNum 100// 最大顶点数#define OK 1 #define ERROR 0 typedef int Status; typedef string VerTexType; typedef int OtherInfo; typedef struct ode// 边结点{ int adjvex;// 该边所指向的顶点的位置 struct ode* nextarc;// 指向下一条边的指针 OtherInfo info;// 和边相关的信息}ode; typedef struct VNode// 顶点信息{ VerTexType data; ode* firstarc;// 指向第一条依附该顶点的边的指针}VNode,AdjList[MVNum];//Adjlist 表示邻接表类型 typedef struct { AdjList vertices; int vexnum,um;// 图的当前顶点数}ALGraph; typedef struct StackNode { int data; struct StackNode* next; }StackNode,*LinkStack; Status InitStack(LinkStack& S) { S=NULL; return OK; } Status Push(LinkStack& S,int e) { LinkStack p; p=new StackNode; p->data=e; p->next=S; S=p; return OK; } Status Pop(LinkStack& S,int& e) { LinkStack p; p=new StackNode; if(S==NULL) return ERROR; e=S->data; p=S; S=S->next; delete p; return OK; } Status StackEmpty(LinkStack S) { if(S==NULL) return OK; else return ERROR; } Status LocateVex(ALGraph G,string v) { int i; for(int i=0;i<;i++) if([i].data==v) return i; return ERROR; } Status CreateUDG(ALGraph& G) { ode* p1,*p2; string v1,v2; int i,j; cout<<" 输入总顶点数和总边数: "<<endl; cin>>>>;// 输入总顶点数和总边数 cout<<" 输入各点,构造表头结点表: "<<endl; for(int i=0;i<;i++) { cin>>[i].data;// 输入顶点值 [i].firstarc=NULL;// 初始化表头结点的指针域为 NULL } cout<<" 输入各边,构造邻接表: "<<endl; for(i