我必须制作一个有序图形,它首先进行呼吸搜索,深度优先搜索和拓扑排序。我的教授希望我们使用邻接列表来构建图表并希望我们使用C,即使我们整年都在使用Java,所以当涉及到C时我有点生疏。在编译时遇到分段错误到目前为止,我无法弄清楚原因。我已经尝试使用print语句来查找代码失败的地方但没有打印任何内容。你能帮忙找出问题所在吗?我将包含我的代码和我正在使用的示例数据。
的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;
}
my.h
#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[]);
MYFILE
A B
B C
E X
C D
答案 0 :(得分:1)
您可能需要分配VERTEX * adjList [26];在使用之前