我必须制作一个有向图,进行呼吸优先搜索,深度优先搜索和拓扑排序。我的教授希望我们使用邻接表来构造图形,并且希望我们使用C,即使我们整年都在使用Java,所以我对C有点生疏。编译时遇到了分段错误我到目前为止,我不知道为什么。我尝试放置打印语句以查找代码失败的地方,但没有打印任何内容。您能帮忙找出问题所在吗?我将包括我的代码和正在使用的示例数据。
main.c
//Main Function
#include "my.h"
int main (int argc, char* argv[])
{
int y = 0;
int x = 0;
VERTEX *adjList[26];
FILE* p;
char *fp;
char a;
char b;
int check1 = 0;
int check2 = 0;
int size = 0;
int searchsuccess = 0;
//Statements
printf("Awdada");
p = fopen( argv[1], "r");
printf("aweada");
while(fscanf(p, "%c %c",&a,&b)!= EOF)
{
check1 = adjListSearch(a,size,adjList);
if(check1==1)
{
(*adjList[size]).c = a;
size = size +1;
}
check2 = adjListSearch(b,size,adjList);
if(check2==1)
{
(*adjList[size]).c = b;
size = size +1;
}
}
//End While
return 0;
}
//End main
adjListSearch.c
#include "my.h"
int adjListSearch (char a, int size, VERTEX* adjList[])
{
int i;
if(size == 0)
{
return 1;
}
for(i = 0; i<size; i++)
{
if((* adjList[i]).c = a)
{
return 0;
}
}
return 1;
}
我的
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
/* Forward declaration */
struct EDGETAG;
typedef struct
{
char c;
bool isVisited;
struct EDGETAG* p;
} VERTEX;
typedef struct EDGETAG
{
VERTEX* v;
struct EDGETAG* q;
} EDGE;
int main (int argc, char* argv[]);
int adjListSearch (char a, int size, VERTEX* adjList[]);
我的档案
A B
B C
E X
C D
最佳答案
您可能必须分配VERTEX * adjList [26];使用之前