这是C(adjacency.c)中的程序,它检查是否存在从节点a到节点b的有向图方式
# include <stdio.h>
# include <stdlib.h>
#define N 11
#define FALSE 0
#define TRUE 1
typedef int[N][N] adj_mat;
int path (adj_mat A, int u, int v)
void main()
{
adj_mat Matrix;
int dadnode, sonnode;
printf("bla-bla-bla enter nodes.\n");
printf("Press Ctrl+Z after finishing of bla-bla-bla all the nodes\n");
do {
printf("Enter the number of first node\n");
scanf("%d", &dadnode);
printf("Enter the number of second node\n");
scanf("%d", &sonnode;);
if ((dadnode < sonnode) && (sonnode <= N) && (dadnode > 0))
Matrix[dadnode][sonnode] = 1;
} while ( (dadnode != EOF ) && (sonnode != EOF));
printf("Now enter u and v nodes to check if exists way from u node to we node\n")
printf("Enter the number of u node\n");
scanf("%d", &dadnode);
printf("Enter the number of v node\n");
scanf("%d", &sonnode;);
if ((dadnode < sonnode) && (sonnode <= N) && (dadnode > 0))
{
if(path(Matrix,dadnode,sonnode) == TRUE )
printf ("Exists way from node u to node v ");
}
else printf printf ("Not exists way from node u to node v ");
}
int path (adj_mat A, int u, int v)
{
if (v >= u)
return FALSE;
int nodenum;
for(nodenum = v - 1; nodenum > 0; nodenum-- )
{
if (A[nodenum][v] == TRUE)
{
if (nodenum == u) /
return TRUE;
else if (path (adj_mat A, int u, int nodenum))
return TRUE;
}
}
return FALSE;
}
当我键入命令我得到
怎么修 ?
更新:谢谢大家的帮助。编译。
最佳答案
您应该将[N][N]
部分移到声明的末尾,并在path
的正向声明后添加分号。
typedef int adj_mat[N][N];
int path (adj_mat A, int u, int v);
其余代码中也存在错误:
scanf("%d", &sonnode;);
具有多余的分号,应为scanf("%d", &sonnode);
else printf printf
应该是else printf
/
在不应出现的一行的末尾main
需要返回一个int
关于c - “ ‘(’ token 之前的预期标识符或 ‘[’, “error: expected ‘)’之前的 ‘A’”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10365859/