?? 習題-37.c
字號:
//本程序只給出了算法思想
//讀者可以自己完善本程序
Status Build_AdjMulist(AMLGraph &G)
//輸入有向圖的頂點數(shù),邊數(shù),頂點信息和邊的信息建立鄰接多重表
{
InitAMLGraph(G);
scanf("%d",&v);
if(v<0)
return ERROR; //頂點數(shù)不能為負
G.vexnum=v;
scanf(%d",&a);
if(a<0) return ERROR; //邊數(shù)不能為負
G.arcnum=a;
for(m=0;m<v;m++)
G.adjmulist[m].data=getchar(); //輸入各頂點的符號
for(m=1;m<=a;m++)
{
t=getchar();h=getchar(); //t為弧尾,h為弧頭
if((i=LocateVex(G,t))<0)
return ERROR;
if((j=LocateVex(G,h))<0)
return ERROR; //頂點未找到
p=(EBox*)malloc(sizeof(EBox));
p->ivex=i;p->jvex=j;
p->ilink=NULL;p->jlink=NULL; //邊結(jié)點賦初值
if(!G.adjmulist[i].firstedge) G.adjmulist[i].firstedge=p;
else
{
q=G.adjmulist[i].firstedge;
while(q)
{
r=q;
if(q->ivex==i) q=q->ilink;
else q=q->jlink;
}
if(r->ivex==i) r->ilink=p;//注意i值既可能出現(xiàn)在邊結(jié)點的ivex域中,
else r->jlink=p; //又可能出現(xiàn)在邊結(jié)點的jvex域中
}//else //插入i鏈表尾部
if(!G.adjmulist[j].firstedge) G.adjmulist[j].firstedge=p;
else
{
q=G.adjmulist[i].firstedge;
while(q)
{
r=q;
if(q->jvex==j) q=q->jlink;
else q=q->ilnk;
}
if(r->jvex==j)
r->jlink=p;
else r->ilink=p;
}//else //插入j鏈表尾部
}//for
return OK;
}//Build_AdjList
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -