帮忙解释这个拓扑排序的程序

来源:百度知道 编辑:UC知道 时间:2024/06/07 00:44:16
最好给出每步的解释
#include <stdio.h>
#include <string.h>
typedef struct node{
int adjvex;
struct node *next;
}EdgeNode;
typedef struct vnode{
int id;
EdgeNode *link;
}vnode,Adjlist[100];
typedef Adjlist LGraph;
typedef struct snode{
int data;
struct snode *next;
}Link_Stack;
Link_Stack *top,*s;
void Push(Link_Stack **top,int x){
s=(Link_Stack*)malloc(sizeof(Link_Stack));
s->data=x;
s->next=(*top)->next;
(*top)->next=s;}
void GetTop(Link_Stack **top,int *x){
s=(*top)->next;
*x=s->data;
(*top)->next=s->next;
free(s);}
int CreatGraph(LGraph gl){
int m,n,i=0,c,d;
EdgeNode *p;
printf("input start.\n");
printf("please input how many vertex there had?\n",i);
scanf("\n%d",&c);
for(i=0;i<c;i++){
gl[i].link=NULL;
gl[i]

#include <stdio.h>//呵呵,我也学了一回,原来是这么回事,有机会也要用用,
#include <string.h>

typedef struct node{//边接点
int adjvex;
struct node *next;
}EdgeNode;

typedef struct vnode{//顶点
int id;
EdgeNode *link;
}vnode,Adjlist[100];

typedef Adjlist LGraph;

typedef struct snode{//栈结点
int data;
struct snode *next;
}Link_Stack;

Link_Stack *top,*s;

void Push(Link_Stack **top,int x)//入栈
{
s=(Link_Stack*)malloc(sizeof(Link_Stack));
s->data=x;
s->next=(*top)->next;
(*top)->next=s;
}

void GetTop(Link_Stack **top,int *x)//出栈,取得栈顶元素
{
s=(*top)->next;
*x=s->data;
(*top)->next=s->next;
free(s);
}

int CreatGraph(LGraph gl)//创建图
{
int m,n,i=0,c,d;
EdgeNode *p;
printf("input start.\n");
printf("please input how many vertex there had?