• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ LocateVex函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中LocateVex函数的典型用法代码示例。如果您正苦于以下问题:C++ LocateVex函数的具体用法?C++ LocateVex怎么用?C++ LocateVex使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了LocateVex函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: DeleteArc

//Function use: G中删除弧<v,w>,若是无向,还删除<w,v>
Status DeleteArc(MGraph *pG, VertexType v, VertexType w)
{
	int nSeqV;
	int nSeqW;
	nSeqV = LocateVex(*pG, v);
	nSeqW = LocateVex(*pG, w);
	if (nSeqV < 0 || nSeqW < 0)
	{
		return ERROR;
	}
	else
	{
		if (DN == (*pG).kind || AN == (*pG).kind)
		{
			(*pG).arcs[nSeqV][nSeqW].adj = INFINITY;
		}
		else
		{
			(*pG).arcs[nSeqV][nSeqW].adj = 0;
		}
		if (NULL != (*pG).arcs[nSeqV][nSeqW].info)
		{
			free((*pG).arcs[nSeqV][nSeqW].info);
			(*pG).arcs[nSeqV][nSeqW].info = NULL;
		}
		if (AG == (*pG).kind || AN == (*pG).kind)
		{
			(*pG).arcs[nSeqW][nSeqV].adj = (*pG).arcs[nSeqV][nSeqW].adj;
			(*pG).arcs[nSeqW][nSeqV].info = NULL;
		}
		(*pG).arcnum--;
	}

	return OK;
}
开发者ID:jasonleakey,项目名称:CrapCodes,代码行数:36,代码来源:basic_op.c


示例2: CreateUDN

void CreateUDN(MGraph &G)
{
	int i, j, k, IncInfo;
	VRType w;
	VertexType v1, v2;

	printf("请输入无向网G的顶点数,边数,边是否含相关信息(是:1 否:0):");
	scanf("%d,%d,%d", &G.vexnum, &G.arcnum, &IncInfo);
	printf("请输入%d个顶点的值(名称<%d个字符):\n", G.vexnum, MAX_NAME);
	for (i = 0; i < G.vexnum; ++i)
		Input(G.vexs[i]);
	for (i = 0; i < G.vexnum; ++i)
		for (j = 0; j < G.vexnum; ++j) {
			G.arcs[i][j].adj = INFINITY;
			G.arcs[i][j].info = NULL;
		}
	printf("请输入%d条边的顶点1 顶点2 权值:\n", G.arcnum);
	for (k = 0; k < G.arcnum; ++k) {
		scanf("%s%s%d%*c", v1.name, v2.name, &w);
		i = LocateVex(G, v1);
		j = LocateVex(G, v2);
		G.arcs[i][j].adj = w;
		if (IncInfo)
			InputArc(G.arcs[i][j].info);

		G.arcs[j][i] = G.arcs[i][j];
	}
	G.kind = UDN;
}
开发者ID:zqw86713,项目名称:Data.Structure.Solution,代码行数:29,代码来源:bo7-1.cpp


示例3: CreateDG

Status CreateDG(MGraph *G){
	int IncInfo;
	printf("输入顶点数, 弧数, 其他信息\n");
	scanf("%d %d %d", &(*G).vexnum, &(*G).arcnum, &IncInfo);

	int i, j, k;
	printf("输入顶点\n");
	for(i = 0; i < (*G).vexnum; i++){
		getchar();
		scanf("%c", &(*G).vexs[i]);
	}

	for(i = 0; i < (*G).vexnum; i++){
		for(j = 0; j < (*G).vexnum; j++){
			(*G).arcs[i][j].adj = 0;
			(*G).arcs[i][j].info = NULL;
		}
	}

	VertexType v1, v2;
	int w;
	printf("输入弧的初始点和终端点\n");
	for(k = 0; k < (*G).arcnum; k++){
		getchar();
		scanf("%c %c", &v1, &v2);
		// printf("%c %c %d\n", v1, v2);
		i = LocateVex((*G), v1);
		j = LocateVex((*G), v2);
		// printf("%d %d %d\n", i, j, w);
		(*G).arcs[i][j].adj = 1;
		if(IncInfo){
			// Input(*(*G).arcs[i][j].info);
		}
	}
}
开发者ID:qq3102328040,项目名称:playground-c,代码行数:35,代码来源:MGraph_ex3.c


示例4: InsertArc

 Status InsertArc(OLGraph *G,VertexType v,VertexType w)
 { /* 初始条件: 有向图G存在,v和w是G中两个顶点 */
   /* 操作结果: 在G中增添弧<v,w> */
   int i,j;
   int IncInfo;
   char str[MAX_Info];
   ArcBox *p;
   i=LocateVex(*G,v); /* 弧尾的序号 */
   j=LocateVex(*G,w); /* 弧头的序号 */
   if(i<0||j<0)
     return ERROR;
   p=(ArcBox *)malloc(sizeof(ArcBox)); /* 生成新结点 */
   p->tailvex=i; /* 给新结点赋值 */
   p->headvex=j;
   p->hlink=(*G). xlist[j].firstin; /* 插在入弧和出弧的链头 */
   p->tlink=(*G). xlist[i].firstout;
   (*G). xlist[j].firstin=(*G). xlist[i].firstout=p;
   (*G). arcnum++; /* 弧数加1 */
   printf("要插入的弧是否含有其它信息(是: 1,否: 0): ");
   scanf("%d",&IncInfo);
   if(IncInfo)
   {
     printf("请输入该弧的相关信息(<%d个字符): ",MAX_Info);
     scanf("%s",str);
     p->info=(InfoType *)malloc((strlen(str)+1)*sizeof(InfoType));
     strcpy(p->info,str);
   }
   else
     p->info=NULL;
   return OK;
 }
开发者ID:CNmatumbaman,项目名称:Data-Structure-1,代码行数:31,代码来源:Bo7-3.c


示例5: CreateDG

void CreateDG(MGraph &G)
{
	int i, j, k, IncInfo;
	VertexType v1, v2;

	printf("请输入有向图G的顶点数,弧数,弧是否含相关信息(是:1 否:0):");
	scanf("%d,%d,%d", &G.vexnum, &G.arcnum, &IncInfo);
	printf("请输入%d个顶点的值(名称<%d个字符):\n", G.vexnum, MAX_NAME);
	for (i = 0; i < G.vexnum; ++i)
		Input(G.vexs[i]);
	for (i = 0; i < G.vexnum; ++i)
		for (j = 0; j < G.vexnum; ++j) {
			G.arcs[i][j].adj = 0;
			G.arcs[i][j].info = NULL;
		}
	printf("请输入%d条弧的弧尾 弧头:\n", G.arcnum);
	for (k = 0; k < G.arcnum; ++k) {
		scanf("%s%s%*c", v1.name, v2.name);
		i = LocateVex(G, v1);
		j = LocateVex(G, v2);
		G.arcs[i][j].adj = 1;
		if (IncInfo)
			InputArc(G.arcs[i][j].info);
	}
	G.kind = DG;
}
开发者ID:zqw86713,项目名称:Data.Structure.Solution,代码行数:26,代码来源:bo7-1.cpp


示例6: CreateDG

Status CreateDG(OLGraph &G) {  // 算法7.3
  // 采用十字链表存储表示,构造有向图G(G.kind=DG)。
  //scanf(&G.vexnum, &G.arcnum, &IncInfo);  
  int i,j,k;
  char v1,v2;
  int IncInfo=0;
  struct ArcBox *p;
  scanfInit();  // 输入初始化
  scanf(&G.vexnum, &G.arcnum, &IncInfo);  // 自定义输入函数
  for (i=0; i<G.vexnum; ++i) {            // 构造表头向量
    scanf(&G.xlist[i].data);              // 输入顶点值
    G.xlist[i].firstin = G.xlist[i].firstout = NULL;  // 初始化指针
  }
  for (k=0; k<G.arcnum; ++k) {  // 输入各弧并构造十字链表
    scanf(&v1, &v2);            // 输入一条弧的始点和终点
    i=LocateVex(G, v1);  j=LocateVex(G, v2); // 确定v1和v2在G中位置
		
    p=(ArcBox *) malloc (sizeof (ArcBox));     // 假定有足够空间
       // *p = {i, j, G.xlist[j].firstin, G.xlist[i].firstout, NULL} 
       // {tailvex, headvex, hlink, tlink, info}
    p->tailvex=i;
    p->headvex=j;
    p->hlink=G.xlist[j].firstin;
    p->tlink=G.xlist[j].firstout;
    G.xlist[j].firstin = G.xlist[i].firstout = p; 
        // 完成在入弧和出弧链头的插入
    //if (IncInfo) Input(*p->info); // 输入弧含有相关信息,此略!!!
  }
  return OK;
} // CreateDG
开发者ID:PengJi,项目名称:Data-Structure,代码行数:30,代码来源:ALGO0703.CPP


示例7: InsertArc

Status InsertArc(AMLGraph *G,VertexType v,VertexType w)
{ /* 初始条件: 无向图G存在,v和W是G中两个顶点 */
  /* 操作结果: 在G中增添弧<v,w> */
  int i,j,l,IncInfo;
  char s[MAX_INFO];
  EBox *p;
  i=LocateVex(*G,v); /* 一端 */
  j=LocateVex(*G,w); /* 另一端 */
  if(i<0||j<0)
    return ERROR;
  p=(EBox*)malloc(sizeof(EBox));
  p->mark=unvisited;
  p->ivex=i;
  p->jvex=j;
  p->info=NULL;
  p->ilink=(*G).adjmulist[i].firstedge; /* 插在表头 */
  (*G).adjmulist[i].firstedge=p;
  p->jlink=(*G).adjmulist[j].firstedge; /* 插在表头 */
  (*G).adjmulist[j].firstedge=p;
  printf("该边是否有相关信息(1:有 0:无): ");
  scanf("%d%*c",&IncInfo); /* 吃掉回车符 */
  if(IncInfo) /* 边有相关信息 */
  {
    printf("请输入该边的相关信息(<%d个字符):",MAX_INFO);
    gets(s);
    l=strlen(s);
    if(l)
    {
      p->info=(char*)malloc((l+1)*sizeof(char));
      strcpy(p->info,s);
    }
  }
  (*G).edgenum++;
  return OK;
}
开发者ID:Jzhi,项目名称:C-repository,代码行数:35,代码来源:1-105.c


示例8: CreateUDN

Status CreateUDN(MGraph &G) {//  算法 7.2
  // 采用数组(邻接矩阵)表示法,构造无向网G。
  int i,j,k,w; 
  VertexType  v1,v2; 
  printf("G.vexnum :" );  scanf("%d",&G.vexnum);
  printf("G.arcnum :");   scanf("%d",&G.arcnum);   
  getchar();  /*** 加上此句getchar()!!! ***/
  // scanf("%d,%d,%d",&G.vexnum, &G.arcnum, &IncInfo);      
  for (i=0; i<G.vexnum; i++ ) { 
    printf("G.vexs[%d] : ",i);
    scanf("%c",&G.vexs[i]); 
    getchar();
  } // 构造顶点向量
  for (i=0; i<G.vexnum; ++i )  // 初始化邻接矩阵
    for (j=0; j<G.vexnum; ++j ) {
      G.arcs[i][j].adj = INFINITY; //{adj,info}
      G.arcs[i][j].info= NULL;
    }
  for (k=0; k<G.arcnum; ++k ) {  // 构造邻接矩阵
    printf("v1 (char) : ");  scanf("%c", &v1);getchar();
    printf("v2 (char) : ");  scanf("%c", &v2);getchar();
    printf("w (int) : " );   scanf("%d", &w); getchar();   
                             // 输入一条边依附的顶点及权值
    i = LocateVex(G, v1);  j = LocateVex(G, v2);    
          // 确定v1和v2在G中位置
    G.arcs[i][j].adj = w;                // 弧<v1,v2>的权值
    // if (IncInfo) scanf(G.arcs[i][j].info); // 输入弧含有相关信息
    G.arcs[j][i].adj = G.arcs[i][j].adj; // 置<v1,v2>的对称弧<v2,v1>
  }
  return OK;
} // CreateUDN
开发者ID:PengJi,项目名称:Data-Structure,代码行数:31,代码来源:Algo0702.cpp


示例9: CreateUDN

Status CreateUDN(MGraph &G)//无向网
{
	int IncInfo;
	int i,j,k;
	int v1,v2;
	int w;//权重
	printf("请输入当前顶点数和弧度数:");

	scanf("%d%d",&G.vexnum,&G.arcnum);//如果IncInfo,表示弧没有信息
//	scanf("%d",&IncInfo);

	printf("请依次输入顶点:\n");
	for(i=0;i<G.vexnum;i++)
		scanf("%d",&G.vexs[i]); //构造顶点向量矩阵

	for(i=0;i<G.vexnum;i++)//初始化邻接矩阵
		for(j=0;j<G.vexnum;j++)
		{
			G.arcs[i][j].adj=0;
			G.arcs[i][j].info=NULL;
		}

	printf("请输入两个邻接点及其权重\n");
	for(k=0;k<G.arcnum;k++)//根据弧度数输入顶点
	{
		scanf("%d%d%d",&v1,&v2,&w);
		i=LocateVex(G,v1);
		j=LocateVex(G,v2);
		G.arcs[i][j].adj=w;//给v1和v2赋上权重
		G.arcs[j][i].adj=w;
//		if(IncInfo)
//			scanf("%c",&(*(G.arcs[i][j].info)));
	}
	return OK;
}//CreateUDN
开发者ID:geroge-gao,项目名称:DataStructure,代码行数:35,代码来源:main.cpp


示例10: CreateDG

/**
 * 建立有向图十字链表
 */
Status CreateDG(OLGraph &G)
{
	int i = 0,j = 0,k = 0;
	VertexType v1, v2;
	ArcBox *p;
	int IncInfo = 0;
	printf("输入顶点数、弧数、弧信息标志(空格分隔):\n");
	scanf("%d %d %d", &G.vexnum, &G.arcnum, &IncInfo);  //IncInfo为0则不含其他信息
	getchar();  //接收最后的换行符
	printf("输入%d个表头结点向量:\n", G.vexnum);
	for (i = 0; i < G.vexnum; ++i)
	{
		scanf("%c", &G.xlist[i].data); //输入顶点值
		G.xlist[i].firstin = NULL;   //初始化指针
		G.xlist[i].firstout = NULL;
	}
	getchar();
	for (k = 0; k < G.arcnum; ++k)  //输入各弧并构造十字链表
	{
		printf("输入一条弧的起点和终点:\n");
		scanf("%c %c", &v1, &v2);   //输入一条弧的始点和终点
		getchar();
		i = LocateVex(G, v1);
		j = LocateVex(G, v2);
		p = (ArcBox*)malloc(sizeof(ArcBox));
		if (!p)
			return OVERFLOW;
		*p = { i, j, G.xlist[j].firstin, G.xlist[i].firstout, NULL };
		G.xlist[i].firstout = G.xlist[j].firstin = p;
		if (IncInfo)
			Input(p->info);  //若弧含相关信息,输入
	}

	return OK;
}
开发者ID:thulxabc,项目名称:DS_Code_Y,代码行数:38,代码来源:graph.cpp


示例11: CreateGraph

//利用邻接多重表存储结构,构造无向图G
void CreateGraph (struct Graph *G)
{
    int VertexInfo;//是否含顶点信息
    int EdgeInfo;//是否含边信息
    int i, j, k;
    char s[MAX_INFO];
    struct VertexType a, b;
    struct EdgeTyle *p;

    prinf("请输入无向图G的顶点个数,顶点是否含其他信息(是:1,否:0):");
    scanf("%d%d",G->vexnum, &VertexInfo);
    printf("请输入%d个顶点的值\n",G->vexnum);
    for (i = 0; i < G->vexnum; i++)
    {
        scanf("%s", &G->adjmulist[i].data.name);
        G->adjmulist[i].firstedge = NULL;
        //顶点其他信息
        if (VertexInfo)
        {
            printf("输入该顶点其他信息:\n");
            scanf("%s",s);
            int length = strlen(s);
            if (length)
            {
                G->adjmulist[i].data.info = (char *) malloc ((length + 1) * sizeof (char));
                strcpy(G->adjmulist[i].data.info, s);
            }//end if
        }//end if
    }//end for
    printf("请输入边的条数,边是否含其他信息(是:1,否0):");
    scanf("%d%d",G->edgenum, &EdgeInfo);
    printf("输入每条边的两个端点以及该边的长度,空格分割\n");
    for (k = 0; k < G->edgenum; k++)
    {
        scanf("%s%s",a.name, b.name);
        i = LocateVex(&G, a);
        j = LocateVex(&G, b);
        p = (struct EdgeTyle *) malloc (sizeof(struct EdgeTyle));
        p->ivex = i;
        p->jvex = j;
        p->info = NULL;
        p->ilink = G->adjmulist[i].firstedge;//插在表头
        G->adjmulist[i].firstedge = p;
        p->jlink = G->adjmulist[j].firstedge;//插在表头
        G->adjmulist[j].firstedge = p;
        scanf("%d",&p->length);
        if (EdgeInfo)
        {
            printf("输该边其他信息:\n");
            scanf("%s",s);
            int length = strlen(s);
            if (length)
            {
                p->info = (char *) malloc ((length + 1) * sizeof (char));
                strcpy(p->info, s);
            }
        }//end if
    }//end for
}
开发者ID:waikeungshen,项目名称:DataStructuresStudy,代码行数:60,代码来源:School.c


示例12: InsertArc

void InsertArc(MGraph &G,VertexType v,VertexType w)//在G图中添加<v,w>序列
{
	int i,j;//获取w和v在矩阵当中的位置
	i=LocateVex(G,v);
	j=LocateVex(G,w);
	G.arcs[i][j].adj=1;
	G.arcs[j][i].adj=1;//对称弧
}
开发者ID:geroge-gao,项目名称:DataStructure,代码行数:8,代码来源:main.cpp


示例13: NextAdjVex

Status NextAdjVex(MGraph G,VertexType v,VertexType w)//返回w的的下一个邻接顶点
{
	int i=LocateVex(G,v);
	int k=LocateVex(G,w);
	for(int j=k;j<G.vexnum;j++)
		if(G.arcs[i][j].adj==1&&j>k)
			return G.vexs[j];
	return ERROR;
}
开发者ID:geroge-gao,项目名称:DataStructure,代码行数:9,代码来源:main.cpp


示例14: CreateUDG

/*
* @description:创建无向图
* @more:分几步来做
	1.确定顶点数/弧数
	2.确定各个顶点的值
	3.初始化邻接矩阵
	4.确定邻接矩阵
*/
Status CreateUDG(MGraph *G) {
	int i,j,k,infoflag,len;
	char c;
	//设置一个暂存区和一个临时指针
	char str[MAX_INFO];
	char *info;

	VertexType v1,v2;

	len = 0;

	//确定顶点数/弧数
	printf("please enter vexnum, arcnum is info(1 or 0):");
	scanf("%d,%d,%d",&(*G).vexnum,&(*G).arcnum,&infoflag);

	//确定各个顶点的值
	printf("the value of each vertex:");
	for(i = 0;i < (*G).vexnum ; i++)
		scanf("%d,",&(*G).vexs[i]);
	
	//初始化邻接矩阵
	for(i = 0; i < (*G).vexnum; i++) 
		for(j = 0;j < (*G).vexnum ; j++) {
			(*G).arcs[i][j].adj = 0;	//无向图
			(*G).arcs[i][j].info = NULL;
		}


	//确定邻接矩阵
	printf("please %d heads and %d tails:\n",(*G).vexnum,(*G).arcnum);
	for(k = 0; k < (*G).arcnum; k++) {
		scanf("%d,%d",&v1,&v2);
		
		i = LocateVex(*G,v1);
		j = LocateVex(*G,v2);

		if(i >= 0 && j >= 0)
			(*G).arcs[i][j].adj = (*G).arcs[j][i].adj = 1;	//无向图,对称矩阵
		//如果顶点有附带信息,则输入并申请空间
		if(infoflag) {
			printf("please enter the info:");
			while( (c = getchar()) != '#')
				str[len++] = c;

			info = (char *) malloc(len * sizeof(char));
			str[len] = '\0';

			strcpy(info,str);

			(*G).arcs[i][j].info = (*G).arcs[j][i].info = info;
		}
	}

	(*G).kind = UDG;

	return OK;
}
开发者ID:doodlesomething,项目名称:doodlesomething,代码行数:65,代码来源:ShortestPath.c


示例15: CreateGraph

Status CreateGraph(ALGraph *G)
{ /* 采用邻接表存储结构,构造没有相关信息的图G(用一个函数构造4种图) */
  int i,j,k;
  int w; /* 权值 */
  VertexType va,vb;
  ArcNode *p;
  printf("请输入图的类型(有向图:0,有向网:1,无向图:2,无向网:3): ");
  scanf("%d",&(*G).kind);
  printf("请输入图的顶点数,边数: ");
  scanf("%d,%d",&(*G).vexnum,&(*G).arcnum);
  printf("请输入%d个顶点的值(<%d个字符):\n",(*G).vexnum,MAX_NAME);
  for(i=0;i<(*G).vexnum;++i) /* 构造顶点向量 */
  {
    scanf("%s",(*G).vertices[i].data);
    (*G).vertices[i].firstarc=NULL;
  }
  if((*G).kind==1||(*G).kind==3) /* 网 */
    printf("请顺序输入每条弧(边)的权值、弧尾和弧头(以空格作为间隔):\n");
  else /* 图 */
    printf("请顺序输入每条弧(边)的弧尾和弧头(以空格作为间隔):\n");
  for(k=0;k<(*G).arcnum;++k) /* 构造表结点链表 */
  {
    if((*G).kind==1||(*G).kind==3) /* 网 */
      scanf("%d%s%s",&w,va,vb);
    else /* 图 */
      scanf("%s%s",va,vb);
    i=LocateVex(*G,va); /* 弧尾 */
    j=LocateVex(*G,vb); /* 弧头 */
    p=(ArcNode*)malloc(sizeof(ArcNode));
    p->adjvex=j;
    if((*G).kind==1||(*G).kind==3) /* 网 */
    {
      p->info=(int *)malloc(sizeof(int));
      *(p->info)=w;
    }
    else
      p->info=NULL; /* 图 */
    p->nextarc=(*G).vertices[i].firstarc; /* 插在表头 */
    (*G).vertices[i].firstarc=p;
    if((*G).kind>=2) /* 无向图或网,产生第二个表结点 */
    {
      p=(ArcNode*)malloc(sizeof(ArcNode));
      p->adjvex=i;
      if((*G).kind==3) /* 无向网 */
      {
        p->info=(int*)malloc(sizeof(int));
        *(p->info)=w;
      }
      else
        p->info=NULL; /* 无向图 */
      p->nextarc=(*G).vertices[j].firstarc; /* 插在表头 */
      (*G).vertices[j].firstarc=p;
    }
  }
  return OK;
}
开发者ID:Jzhi,项目名称:C-repository,代码行数:56,代码来源:1-107.c


示例16: CreateGraph

void CreateGraph(ALGraph *G)
{ /* 采用邻接表存储结构,构造没有相关信息的图G(用一个函数构造4种图) */
	int i,j,k;
	int w; /* 权值 */
	VertexType va,vb;
	ArcNode *p;
	//printf("Enter the type of map:(0~3): ");
	scanf("%d",&(*G).kind);
	//printf("Enter Vertex number,Arc number: ");
	scanf("%d%d",&(*G).vexnum,&(*G).arcnum);
	//printf("Enter %d Vertex :\n",(*G).vexnum);
	for(i=0;i<(*G).vexnum;++i) /* 构造顶点向量 */
	{
		scanf("%s",(*G).vertices[i].data);
		(*G).vertices[i].firstarc=NULL;
	}
	//if((*G).kind==1||(*G).kind==3) /* 网 */
	//	printf("Enter order every arc weight,head and tail (Takes the gap by the blank space ):\n");
	//else /* 图 */
	//	printf("Enter order every arc head and tail (Takes the gap by the blank space ):\n");
	for(k=0;k<(*G).arcnum;++k) /* 构造表结点链表 */
	{
		if((*G).kind==1||(*G).kind==3) /* 网 */
		scanf("%d%s%s",&w,va,vb);
		else /* 图 */
		scanf("%s%s",va,vb);
		i=LocateVex(*G,va); /* 弧尾 */
		j=LocateVex(*G,vb); /* 弧头 */
		p=(ArcNode*)malloc(sizeof(ArcNode));
		p->adjvex=j;
		if((*G).kind==1||(*G).kind==3) /* 网 */
		{
			p->info=(int *)malloc(sizeof(int));
			*(p->info)=w;
		}
		else
		p->info=NULL; /* 图 */
		p->nextarc=(*G).vertices[i].firstarc; /* 插在表头 */
		(*G).vertices[i].firstarc=p;
		if((*G).kind>=2) /* 无向图或网,产生第二个表结点 */
		{
			p=(ArcNode*)malloc(sizeof(ArcNode));
			p->adjvex=i;
			if((*G).kind==3) /* 无向网 */
			{
				p->info=(int*)malloc(sizeof(int));
				*(p->info)=w;
			}
			else
			p->info=NULL; /* 无向图 */
			p->nextarc=(*G).vertices[j].firstarc; /* 插在表头 */
			(*G).vertices[j].firstarc=p;
		}
	}
}
开发者ID:JakLiao,项目名称:Mycode,代码行数:55,代码来源:8648+图的深度遍历.cpp


示例17: DeleteArc

void DeleteArc(MGraph &G,VertexType v,VertexType w)
{
    //删除弧<v,w>,若G是无向的则还需删除对称弧<w,v>
    int i,j;
    G.vexnum-=2;
    G.arcnum-=1;
    i=LocateVex(G,v);
    j=LocateVex(G,w);
    G.arcs[i][j].adj=0;
    G.arcs[j][i].adj=0;

}
开发者ID:geroge-gao,项目名称:DataStructure,代码行数:12,代码来源:BFS.cpp


示例18: CreateUDN

Status CreateUDN(MGraph *G) {
	int i,j,k,len,infoflag,w;
	VertexType v1,v2;

	char str[MAX_INFO];
	char *info;
	char c;

	//确定顶点数/弧数
	printf("please enter vexnum , arcnum and is info(1 or 0):");
	scanf("%d,%d,%d",&(*G).vexnum,&(*G).arcnum,&infoflag);

	//确定各个顶点的值
	printf("the value of each vertex:");
	for(i = 0;i < (*G).vexnum ; i++)
		scanf("%d,",&(*G).vexs[i]);
	
	//初始化邻接矩阵
	for(i = 0; i < (*G).vexnum; i++) 
		for(j = 0;j < (*G).vexnum ; j++) {
			(*G).arcs[i][j].adj = INFINITY;	//无向网
			(*G).arcs[i][j].info = NULL;
		}


	//确定邻接矩阵
	printf("please heads,tails and weights:\n");
	for(k = 0; k < (*G).arcnum; k++) {
		scanf("%d,%d,%d",&v1,&v2,&w);
		
		i = LocateVex(*G,v1);
		j = LocateVex(*G,v2);

		if(i >= 0 && j >= 0)
			(*G).arcs[i][j].adj = (*G).arcs[j][i].adj = w;	//无向网

		//如果顶点有附带信息,则输入并申请空间
		if(infoflag) {
			printf("please enter the info:");
			while( (c = getchar()) != '#')
				str[len++] = c;

			info = (char *) malloc(len * sizeof(char));
			strcpy(info,str);

			(*G).arcs[i][j].info = info;
		}
	}

	(*G).kind = UDN;

	return OK;
}
开发者ID:doodlesomething,项目名称:doodlesomething,代码行数:53,代码来源:ShortestPath.c


示例19: CreateGraph

Status CreateGraph(ALGraph &G){
    //G.kind---- 0:DG 1:DN 2:UDG 3:UDN
    scanf("%d%d%d\n",&G.vexnum,&G.arcnum,&G.kind);
    if(G.kind > 3 || G.kind < 0){
        Error(" Incorrect graph kind input. the legal number must between 0 and 3.");
        return ERROR;
    }
    int i,j,k;
    EdgeType weight;
    ArcNode *pi,*pj;
    VertexType sv,ev;
    for(i = 0; i < G.vexnum; i++) { //Construct vertex nodes.Input vertex data and init adjlist head pointer.
        scanf("%c\n", &G.vertices[i].data); 
        G.vertices[i].firstarc = NULL;
        G.vertices[i].visited = 0;  //set unvisited
    }//for
    for(k = 0; k < G.arcnum; k++) { //Construct arc.Input head and tail of an edge.
        scanf("%c %c\n",&sv,&ev); 
        // locate index of sv and ev
        i = LocateVex(G,sv);
        j = LocateVex(G,ev);
        pi = (ArcNode *)malloc(sizeof(ArcNode));
        if(!pi){
            Error("out of space");
            return ERROR;
        }//if
        pi->adjvex = j;  
        // edge's weight info
        if(G.kind == DN || G.kind == UDN) {
            scanf("%d\n",&weight);
        }
        else 
            weight = 0;
        //Head insert to construct vertices[i]'s adjlist.
        pi->weight = weight;
        pi->nextarc = G.vertices[i].firstarc;
        G.vertices[i].firstarc = pi;
        if(G.kind == UDG || G.kind == UDN) {
            //Construct vertices[j]'s adjlist in the light of symmetry in UDG/UDN.
            pj = (ArcNode *)malloc(sizeof(ArcNode));
            if(!pj){
            Error("out of space");
            return ERROR;
            }//if
            pj->adjvex = i;
            pj->weight = weight;
            pj->nextarc = G.vertices[j].firstarc;
            G.vertices[j].firstarc = pj;
        }//if
    }//for
    return OK;
}//CreateGraph 
开发者ID:hooluupog,项目名称:DataStructure,代码行数:52,代码来源:ALGraph.cpp


示例20: DeleteArc

void DeleteArc(MGraph &G,VertexType v,VertexType w)
{
	//删除弧<v,w>,若G是无向的则还需删除对称弧<w,v>
	int i,j;
	G.vexnum-=2;
	G.arcnum-=1;
	i=LocateVex(G,v);
	j=LocateVex(G,w);
	G.arcs[i][j].adj=0;
	if(G.kind==UDN||G.kind==UDG)//如果是无向图或者无向网,删除对称偶序
		G.arcs[j][i].adj=0;

}
开发者ID:geroge-gao,项目名称:DataStructure,代码行数:13,代码来源:main.cpp



注:本文中的LocateVex函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ Location函数代码示例发布时间:2022-05-30
下一篇:
C++ Locate函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap