数据结构—图

1.基于邻接矩阵创建图的算法;

MGraph( datatype a[ ], int n, int e) 
{	int vertexNum,arcNum;
    vertexNum=n; arcNum=e;
    for (i=0; i<vertexNum; i++) 
        vertex[i]=a[i];
    for (i=0; i<vertexNum; i++)    //初始化邻接矩阵
	   for (j=0; j<vertexNum; j++)
           arc[i][j]=0;             
    for (k=0; k<arcNum; k++)      //依次输入每一条边
    {
        scanf(%d%d”,&i,&j);     //边依附的两个顶点的序号
        arc[i][j]=1;  arc[j][i]=1;  //置有边标志    
    }
}

2.输出图的邻接矩阵的算法;

void  DFSTraverse(int v)  
{
     printf(%d”,vertex[v]); 
     visited [v]=1;
     for (j=0; j<vertexNum; j++)
         if (arc[v][j]==1 && visited[j]==0)
           DFSTraverse( j );
}

3:基于邻接矩阵存储结构的图的深度优先遍历算法(递归算法)

4.邻接表的定义:

struct ArcNode
{    int adjvex; 
      ArcNode *next;
};
struct VertexNode 
{
      datatype  vertex;
      struct ArcNode *firstedge;
};

5:基于邻接表创建图的算法;

void  ALGraph( datatype a[ ], int n, int e)
{   
    vertexNum=n; arcNum=e; 
    for (i=0; i<vertexNum; i++)   
    //输入顶点信息,初始化边表
    {
       adjlist[i].vertex=a[i];
       adjlist[i].firstedge=NULL;      
    } 
     for (k=0; k<arcNum; k++)   
     //输入边的信息存储在边表中
     {
         scanf(%d%d”,&i,&j);    
         s=( ArcNode*)malloc(sizeof(ArcNode)); 
         s->adjvex=j;  	        
         s->next=adjlist[i].firstedge;    
         adjlist[i].firstedge=s;
     }
}

6:输出图的邻接表的算法;

void displayALgraph(int vertexNum)
{	int i,j;
	datatype  x,y;
	struct ArcNode *p;  
	
	printf("\n输出顶点的值及其邻接边:\n");
	for (i=0; i<vertexNum; i++)  //输出顶点的值 
    {   
 		x = adjlist[i].data;
 		printf("%d  :", x );
 		p = adjlist[i].first;
 		while( p )
 		{
 			j = p->vertex;
 			y = adjlist[j].data;
 			printf("(%d,%d)  ",x,y);
 			p = p->next;
 		}
 		printf("\n"); 		
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值