我必须制作一个有向图,进行呼吸优先搜索,深度优先搜索和拓扑排序。我的教授希望我们使用邻接表来构造图形,并且希望我们使用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];使用之前

10-06 16:19