当前位置: 首页>>代码示例>>C++>>正文


C++ LocateVex函数代码示例

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


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


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