有趣的linux命令總結(78天)
阿新 • • 發佈:2022-05-04
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; }