コード例 #1
0
ファイル: Graph.c プロジェクト: Chariemo/home_c
void BFS_A (ALGraph G, int vi)
{
	Queue *q;
	Init_Queue (&q);
	ArcNode *p;
	int v;
	printf ("%c ", G.vertex[vi].data);
	In_Queue (q, vi);
	visited[vi] = 1;
	while (!IsEmpty_Queue (q))
	{
		Out_Queue (q, &v);
		p = G.vertex[v].firstArc;
		while (p)
		{
			if (!visited[p->adj])
			{
				printf ("%c ", G.vertex[p->adj].data);
				visited[p->adj] = 1;
				In_Queue (q, p->adj);
			}
			p = p->nextArc;
		}
	}
}
コード例 #2
0
ファイル: Graph.c プロジェクト: Chariemo/home_c
int TopoSort (ALGraph G)
{
	Queue *q;
	int indegree[MAX], outdegree[MAX];
	int i, count, k;
	ArcNode *p;
	Degree_A (G, outdegree, indegree);
	Init_Queue (&q);
	for (i = 0; i < G.vernum; i++)
		if (indegree[i] == 0)
			In_Queue (q, i);
	count = 0;
	while (!IsEmpty_Queue (q))
	{
		Out_Queue (q, &i);
		printf ("%c ", G.vertex[i].data);
		count++;
		p = G.vertex[i].firstArc;
		while (p)
		{	
			k = p->adj;
			indegree[k]--;
			if (indegree [k] == 0)
				In_Queue (q, k);
			p = p->nextArc;
		}
	}
	if (count < G.vernum)
		return 0;
	else 
		return 1;
}
コード例 #3
0
ファイル: Huffman.c プロジェクト: Gaoyuan0710/Huffman
//从队列里取8个字符(0、1),转换成一个字节
MyType GetBits(SeqQueue *Q)
{
    MyType i,bits = 0;
    char x;

    for(i = 0;i < 8;i++)
    {
        if( Out_Queue(Q,&x) != Empty )
        { //printf("%c",x);
            if(x == '0')
                bits = bits << 1;
            else
                bits = (bits << 1)|1;
        }
        else break;
    }//printf("   bits=%d\n",bits);puts("");

    return bits;
}
コード例 #4
0
ファイル: Graph.c プロジェクト: Chariemo/home_c
void BFS (MGraph G, int vi)
{
	Queue *q;
	Init_Queue (&q);
	int v, i;
	printf ("%c ", G.vertex[vi]);
	In_Queue (q, vi);
	visited[vi] = 1;
	while (!IsEmpty_Queue (q))
	{
		Out_Queue (q, &v);
		i = 0;
		while (i < G.vernum)
		{
			if (!visited[i] && G.arcs[v][i] != INFINITY)
			{
   				printf ("%c ", G.vertex[i]);
				visited[i] = 1;
				In_Queue (q, i);
			}
			i++;
		}
	}
}