C 访问邻接列表时使用什么符号?
我试图在某个图表上进行DFS搜索,在这里我尝试写下以下代码(我知道我犯了很多错误/警告和错误,但这只是一个开始,我需要一些帮助)C 访问邻接列表时使用什么符号?,c,graph,traversal,adjacency-list,C,Graph,Traversal,Adjacency List,我试图在某个图表上进行DFS搜索,在这里我尝试写下以下代码(我知道我犯了很多错误/警告和错误,但这只是一个开始,我需要一些帮助) int已访问[]; 静态int last=-1; 访问的int记录[]; 无效打印\u dfs(图形*图形,整数源\u id) { //printf(“尚未实现:将第1部分的代码放在此处\n”); 已访问[源代码]=1; 记录访问次数[++上次]=源id; int i; 对于(i=0;i您可以通过“点”访问结构的元素,即您可以通过graph[0]从数组中的第一个图形访
int已访问[];
静态int last=-1;
访问的int记录[];
无效打印\u dfs(图形*图形,整数源\u id)
{
//printf(“尚未实现:将第1部分的代码放在此处\n”);
已访问[源代码]=1;
记录访问次数[++上次]=源id;
int i;
对于(i=0;i您可以通过“点”访问结构的元素,即您可以通过graph[0]从数组中的第一个图形访问n
.n
您的粘贴到粘贴箱是私有的。Graph*Graph
在您的函数声明中建议Graph
只指向Graph
的指针,而不是指向Graph
的指针。因此,使用[source\u id][i]将其解除两次防护
不起作用。您至少可以在问题的某个地方包含图形的定义;外部链接不是一个好主意(@yar的评论只是其中一个原因)@Evert很抱歉我将其公开以供访问。我只是认为发布这么长的代码会让人感到恼火…因此选择添加链接…请添加图形。h,我也认为有图形声明,是我的错误表明图形本身不是数组或其他东西(因此我无法取消引用它),但它指向一些列表/顶点,是否有类似于graph->vertices[a]->first_edge的东西?struct graph
是一种结构,它包含三个元素:n
、maxn
和顶点
。您可以使用graph[I]访问指针顶点
.vertices
。然后您可以访问元素,例如通过*(图形[i]。顶点[0])
。但是,graph
不包含指向graph
的指针,因此使用graph*
的递归将不会以这种方式工作。
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);
}
}
}