計(jì)算機(jī)應(yīng)用專業(yè)數(shù)據(jù)結(jié)構(gòu)上機(jī)考試輔導(dǎo)(2)
編一C程序,它能根據(jù)讀入的數(shù)據(jù)構(gòu)造有向圖G,并輸出G的DFS遍歷序列(從V0開始),圖的輸入形式為n V0 Vi0 V1 Vi1 V2 Vi2……Vi Vin -1 -1(-1,-1為輸入結(jié)束標(biāo)記,其余的值都>=0且<n),它們都是整數(shù),且100>n>0.
?。ㄗⅲ撼绦虻目蓤?zhí)行文件名必須是 e3.exe)。
#include <stdio.h>
typedef enum {False,True} Boolean;
int G[100][100];
int n;
void CreatG() /*建立圖的鄰接矩陣G[][]*/
{int i,j;
printf("Input the number of the node:");
scanf("%d",&n);
printf("\n");
for (i=0;i<n;i++)
for (j=0;j<n;j++)
G[i][j]=0;
do
{ scanf("%d %d",&i,&j);
G[i][j]=1;
}while ((i!=-1)&&(j!=-1));
}
void TopSort() /*拓?fù)渑判?輸出拓?fù)湫蛄?/
{ int i,j;
int degree[100]; /*按照無前驅(qū)頂點(diǎn)優(yōu)先思想,degree[]存放個節(jié)點(diǎn)的入度.*/
Boolean visited[100],flag=True;
printf("The Topolgical Order as follow:");
for (i=0;i<n;i++)
{ degree[i]=0;
visited[i]=False;
}
printf("\n");
while(flag==True)
{
for (i=0;i<n;i++)
for (j=0;j<n;j++)
degree[i]=G[j][i]+degree[i];
i=0;
while ((i<n)&&(degree[i]!=0)||visited[i]==True) i++; /*更先輸出入度為0的頂點(diǎn).*/
if (i<n) /*所有節(jié)點(diǎn)均已輸出結(jié)束,否則說明存在環(huán),無拓?fù)湫蛄?/
{printf(" %d",i);
visited[i]=True;
for(j=0;j<n;j++)
{G[i][j]=0; degree[j]=0;}
}
else flag=False;
}
}
main()
{ CreatG();
TopSort();
}
- 熱門課程
- 報(bào)名咨詢
- 2022年10月自考西方政治制度知識點(diǎn):憲政
- 2022年10月自考馬克思主義哲學(xué)原理知識點(diǎn):唯心主義和存在的根源
- 2022年10月自考馬克思主義哲學(xué)原理知識點(diǎn):馬克思主義哲學(xué)的產(chǎn)生是哲學(xué)發(fā)展中的偉大變革
- 2022年10月自考馬克思主義哲學(xué)原理知識點(diǎn):唯物主義
- 2022年10月自考馬克思主義哲學(xué)原理知識點(diǎn):哲學(xué)與科學(xué)的分化
- 2022年10月自考馬克思主義哲學(xué)原理知識點(diǎn):馬克思主義哲學(xué)的歷史發(fā)展
- 2022年10月自考馬克思主義哲學(xué)原理知識點(diǎn):馬克思主義哲學(xué)與中國的社會主義事業(yè)
- 2022年10月自考馬克思主義哲學(xué)原理知識點(diǎn):對世界統(tǒng)一性的不同認(rèn)識
- 2022年10月自考馬克思主義哲學(xué)原理知識點(diǎn):意識是物質(zhì)的產(chǎn)物
- 2022年10月自考馬克思主義哲學(xué)原理知識點(diǎn):意識的能動作用



