2017-04-02 48 views
1

我正試圖在某個圖表上做一個DFS搜索,在這裏我試圖寫下下面的代碼(我知道有很多錯誤/警告和錯誤,但這只是一個開始,我需要一些幫助)。訪問鄰接列表時使用什麼符號?

int visited[]; 
static int last=-1; 
int record_of_visit[]; 


void print_dfs(Graph* graph, int source_id) 
{ 
    //printf("not yet implemented: put code for part 1 here\n"); 
    visited[source_id]=1;     
    record_of_visit[++last]=source_id; 
    int i; 
    for (i=0;i<20;i++) 
    { 
     if (graph[source_id][i]==1) 
     { 
      if(visited[i] == 0) 
       print_dfs(graph,i); 
     } 
    }  
} 

實現鄰接表的graph.c文件可以發現here.

的graph.h文件可以發現here.

在這裏,我試圖訪問這是一個已經建成的圖但編譯器會給我錯誤,當我運行這個程序,指示 在if (graph[source_id][i]==1)

下標值既不是數組也不是指針

我在做什麼錯在這裏?還有什麼提示或建議,以改善我仍然原始的DFS實施,將不勝感激!

+1

你貼在引擎收錄存取權限n是私人的。 – yar

+1

函數聲明中的Graph * graph表示'graph'只是指向'Graph'的指針,而不是指向'Graph'的指針。因此,使用'[source_id] [i]'解除兩次拒絕將不起作用。 – Evert

+0

你至少可以在你的問題中包含'Graph'的定義;外部鏈接不是一個好主意(@ yar的評論只是其中一個原因)。 – Evert

回答

0

您可以通過一個「點」,即訪問結構的元素,你可以從你的數組中的第一個圖由graph[0].n

+0

事情是我指出的圖形本身不是一個數組或東西(因此我不能去引用它),但它指向一些列表/頂點,有沒有像graph-> vertices [a] - > first_edge ? –

+0

'struct graph'是一個結構體,它包含三個元素:'n','maxn'和'vertices'。你可以用'graph [i] .vertices'來訪問指針'頂點'的指針。然後你可以訪問一個元素,例如通過'*(圖形[i] .vertices [0])'。儘管如此,'graph'不包含指向'graph'的指針,所以'Graph *'遞歸將不會以這種方式工作。 – yar