图深度优先遍历(递归和栈实现)

/* depth-first traversal 
 * two methods: recursive and non-recursive
 * Graph is stored in an adjacency matrix
 */
#include
#include

#define MAX		10

int sp = 0;//stack pointer
int stack[MAX];

/**********************stack***************************/
void push(int f)
{
	if(sp < MAX)
		stack[sp++] = f;
	else
		printf("error: stack full, can't push %d\n", f);
}

int pop(void)
{
	if(sp > 0)
		return stack[--sp];
	else {
		printf("error: stack empty\n");
		return 0;
	}
}


void buildGraph(int adj[][MAX], int n)
{
	int i, j;
	for(i=0; i


你可能感兴趣的:(Data,Structure,and,Algorithm)