求大神帮助!

作业:用邻接表实现图的深度与广度优先遍历。(做出来的遍历结果序列有问题)

数据结构中用C语言写的的建立无向图的邻接表部分代码

程序如下:

问题: 
怎么理解建立无向图邻接表插入节点v1,v2的C程序代码部分,最好画图分析?

/*邻接表表示的图的深度优先搜索和广度优先搜索程序*/
#include <stdio.h>
#define maxvertexnum 100
#define queuesize 100
#define null 0

          插入节点V1,v2的代码部分应该怎样理解,有点困惑

typedef struct
{
 int front,rear,count,data[queuesize];
}cirqueue; 
typedef int vertextype; 

//建立无向图邻接表的部分源代码

/*图的邻接表的边结点定义*/
typedef struct node
{
 int adjvex; 
    struct node *next; 
}edgenode;

typedef struct node
{
int adjvex;
struct node *next;
}ARC;
typedef struct vex
{
int vertex;
ARC *first;
 }VEX;
澳门新葡亰, VEX adj[100];
 
 
 int create()
 {
 ARC *p;
 int arcnum,vexnum,k,v1,v2;
 printf(“请输入顶点数和变数(输入格式为:顶点数,边数)”)
 scanf(“%d,%d”,&vexnum,&arcnum);
 for(k=1;k<=vexnum;k++)
 adj[k].first=0;
 for(k=0;k<arcnum;k++)
 {
  printf(“v1,v2=”);
  scanf(“%d,%d”,&v1,&v2);
  p=(ARC
*)malloc(sizeof(ARC));//疑问开始部分行
  p->adjvex=v2;
  p->next=adj[v1].first;
  adj[v1].first=p;
  p=(ARC *)malloc(sizeof(ARC));
  p->adjvex=v1;
  p->next=adj[v2].first;
  adj[v2].first=p; 
//疑问结束结束部分行
  }
  return (vexnum);
  }
 
 
“`
 
“`

/*图的邻接表表示的顶点结点定义*/
typedef struct vnode
{
 vertextype vertex; 
    edgenode *firstedge; 
}vertexnode; 

          

typedef vertexnode adjlist[maxvertexnum]; 

网站地图xml地图