1. 程式人生 > 其它 >C++執行記憶體memcpy的效率測試

C++執行記憶體memcpy的效率測試

3

void degree(MGraph G)
{
    for(int i = 0 ; i < G.vexnum ; i ++)
    {
        int cnt = 0;
        for(int j = 0 ; j < G.vexnum ; j ++)
            if(G.arcs[i][j]) cnt ++;
        printf("%c:%d\n",G.vexs[i],cnt);
    }
}

2

int LocateVex(ALGraph G, VertexType v)//返回頂點v的儲存下標,不存在返回-1
{
    for(int i=0; i<G.vexnum; i++ )
    if(G.vertices[i].data==v) {
        return i;
    }
    return -1;
}
Status CreateALGraph(ALGraph &G)//根據輸入的頂點集合和關係集合完成鄰接表的構建。
{
    VertexType x,y;
    ArcNode *p;
    int i,w,loc1,loc2;
    scanf("%d%d",&G.vexnum,&G.arcnum);
    getchar();
    for(i=0;i<G.vexnum;i++)
    {
	scanf("%c",&G.vertices[i].data);
	G.vertices[i].firstarc=NULL; 
    }
    for(i=0;i<G.arcnum;i++){
        getchar();
        scanf("%c%c%d",&x,&y,&w);
		loc1=LocateVex(G,x);
		loc2=LocateVex(G,y);
		p=(ArcNode*)malloc(sizeof(ArcNode));  
		p->adjvex=loc2;
		p->weight=w;
        p->next=G.vertices[loc1].firstarc; 
		G.vertices[loc1].firstarc=p;
    }
    return OK;
}

1

int LocateVex(MGraph G, VertexType v)//求頂點v在圖中的位置,若不存在返回-1,存在返回[0,n-1]
{
    int j= -1, k ;
    for( k=0; k<G.vexnum; k++ )
    if(G.vexs[k]==v) {
           j=k;
           break; 
    }
    return j;
}
Status CreateUDN(MGraph &G)//採用鄰接矩陣法構造無向網
{
    int i , j, k, w; 
    VertexType v1,v2; 
    scanf("%d %d",&G.vexnum,&G.arcnum);
    getchar();
    for(i=0;i<G.vexnum;i++)
       scanf("%c",&G.vexs[i]);
    for(i=0;i<G.vexnum;i++)
   	    for(j=0;j<G.vexnum;j++) 
          {	G.arcs[i][j]=INFINITY;   	}
    for(k=0;k<G.arcnum;k++)        
    {
        getchar();
        scanf("%c%c%d",&v1,&v2,&w); 
        i=LocateVex(G,v1);
        j=LocateVex(G,v2);
        G.arcs[i][j]=G.arcs[j][i]=w;
    }
      return  OK; 
}