成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

c語(yǔ)言鄰接表的輸出函數(shù) c語(yǔ)言鄰接表的深度優(yōu)先遍歷

C語(yǔ)言中,輸出函數(shù)有哪些?

C語(yǔ)言輸入輸出函數(shù)有很多,標(biāo)準(zhǔn)I/O函數(shù)中包含了如下幾個(gè)常用的函數(shù):

創(chuàng)新互聯(lián)建站專(zhuān)業(yè)為企業(yè)提供桐城網(wǎng)站建設(shè)、桐城做網(wǎng)站、桐城網(wǎng)站設(shè)計(jì)、桐城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、桐城企業(yè)網(wǎng)站模板建站服務(wù),10年桐城做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.

int

scanf(const

char

*format,

arg_list)

scanf主要從標(biāo)準(zhǔn)輸入流中獲取參數(shù)值,format為指定的參數(shù)格式及參數(shù)類(lèi)型,如scanf("%s,%d",str,icount);

它要求在標(biāo)準(zhǔn)輸入流中輸入類(lèi)似"son

of

bitch,1000"這樣的字符串,同時(shí)程序會(huì)將"son

of

bitch"給str,1000給icount.

scanf函數(shù)的返回值為int值,即成功賦值的個(gè)數(shù),在上例中如果函數(shù)調(diào)用成功,則會(huì)返回2,所以我們?cè)趯?xiě)程序時(shí),可以通過(guò)

語(yǔ)句if(scanf("%s,%d",str,icount)

!=

2){...}來(lái)判斷用戶(hù)輸入是否正確.

int

printf(const

char

*format,

arg_list)

printf主要是將格式化字符串輸出到標(biāo)準(zhǔn)輸出流中,在stdio.h頭文件中定義了標(biāo)準(zhǔn)的輸入和輸出,分別是stdin,stdout.

arg_list可以是變量名,也可以是表達(dá)式,但最終都會(huì)以值的形式填充進(jìn)format中.

int

getc(FILE

*fp)

getc主要是從文件中讀出一個(gè)字符.常用的判斷文件是否讀取結(jié)束的語(yǔ)句為:(ch

=

getc(fp))

!=

EOF.EOF為文件結(jié)束標(biāo)志,

定義在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定義在stdlib.h中一樣,文件也可以被理解為一種流,所以當(dāng)fp為stdin

時(shí),getc(stdin)就等同于getchar()了.

int

putc(int

ch,FILE

*fp)

putc主要是把字符ch寫(xiě)到文件fp中去.如果fp為stdout,則putc就等同于putchar()了.

int

getchar(void)

getchar主要是從標(biāo)準(zhǔn)輸入流讀取一個(gè)字符.默認(rèn)的標(biāo)準(zhǔn)輸入流即stdio.h中定義的stdin.但是從輸入流中讀取字符時(shí)又

涉及到緩沖的問(wèn)題,所以并不是在屏幕中敲上一個(gè)字符程序就會(huì)運(yùn)行,一般是通過(guò)在屏幕上敲上回車(chē)鍵,然后將回車(chē)前的字符

串放在緩沖區(qū)中,getchar就是在緩沖區(qū)中一個(gè)一個(gè)的讀字符.當(dāng)然也可以在while循環(huán)中指定終止字符,如下面的語(yǔ)句:

while

((c

=

getchar())

!=

'#')這是以#來(lái)結(jié)束的.

int

putchar(int

ch)

putchar(ch)主要是把字符ch寫(xiě)到標(biāo)準(zhǔn)流stdout中去.

char

*

gets(char

*str)

gets主要是從標(biāo)準(zhǔn)輸入流讀取字符串并回顯,讀到換行符時(shí)退出,并會(huì)將換行符省去.

int

puts(char

*str)

puts主要是把字符串str寫(xiě)到標(biāo)準(zhǔn)流stdout中去,并會(huì)在輸出到最后時(shí)添加一個(gè)換行符.

char

*fgets(char

*str,

int

num,

FILE

*fp)

str是存放讀入的字符數(shù)組指針,num是最大允許的讀入字符數(shù),fp是文件指針.fgets的功能是讀一行字符,該行的字符數(shù)

不大于num-1.因?yàn)閒gets函數(shù)會(huì)在末尾加上一個(gè)空字符以構(gòu)成一個(gè)字符串.另外fgets在讀取到換行符后不會(huì)將其省略.

int

fputs(char

*str,

file

*fp)

fputs將str寫(xiě)入fp.fputs與puts的不同之處是fputs在打印時(shí)并不添加換行符.

int

fgetc(FILE

*fp)

fgetc從fp的當(dāng)前位置讀取一個(gè)字符.

int

fputc(int

ch,

file

*fp)

fputc是將ch寫(xiě)入fp當(dāng)前指定位置.

int

fscanf(FILE

*fp,

char

*format,...)

fscanf按照指定格式從文件中出讀出數(shù)據(jù),并賦值到參數(shù)列表中.

int

fprintf(FILE

*fp,

char

*format,...)

fprintf將格式化數(shù)據(jù)寫(xiě)入流式文件中.

就高手幫幫忙,寫(xiě)一個(gè)以鄰接表形式構(gòu)建圖并輸出的的函數(shù),感激不盡吶!(C語(yǔ)言版的,最好是結(jié)構(gòu)體形式)

沒(méi)人理你……

我找不到簡(jiǎn)單的版本的……

只找到一個(gè)還算簡(jiǎn)單的……

#include?stdio.h

#include?stdlib.h

#include?malloc.h

#include?ctype.h

#define?MaxVerNum?50

#define?OK?1

#define?NULL?0

typedef?int?Status;

int?visited[MaxVerNum];

typedef?struct?Arcnode{?????

int?adjvex;

struct?Arcnode?*next;

int?info;

}ArcNode;

typedef?struct?vnode{

char?data;

ArcNode?*firstedge;

}VNode;

typedef?VNode?AdjList[MaxVerNum];

typedef?struct?{

AdjList?adjlist;

int?vexnum,arcnum;

}?ALGraph;?

Status?Visit(char?e)//輸出一個(gè)字母

{

printf("%2c",e);

return?OK;

}

void?Get(char?*e)//輸入一個(gè)字母

{

scanf("%c",e);

while(!('A'?=?*e??*e=?'Z')||('a'?=?*e??*e?=?'z'))

scanf("%c",e);

}

void?TGet(int?*e)//輸入一個(gè)數(shù)字

{

scanf("%d",e);

while(scanf("%d",?e)?=?0)

{??

getchar();

}

}

void?InIt(ALGraph?*G,int?S[])//數(shù)組初始化

{

for(int?i=0;iG-vexnum;i++)

S[i]=0;

}

void?FindD(ALGraph?*G,char?arch,int?*a)//?找到頂點(diǎn)的下標(biāo)

{

int?m;

for(m=0;mG-vexnum;m++)

{

if(arch?==?G-adjlist[m].data)

*a?=?m;

}

}

void?Find(ALGraph?*G,char?arch,char?arce,int?*a,int?*b)//?找到弧頭和弧尾的下標(biāo)

{

FindD(G,arch,a);

FindD(G,arce,b);

}

Status?IsBe(ALGraph?*G,char?arch)//?判斷頂點(diǎn)是否已存在

{

for(int?m=0;mG-vexnum;m++)

{

if(arch?==?G-adjlist[m].data)

{

return?OK;

}

}

return?0;

}//IsBe

Status?AIsBe(ALGraph?*G,int?i,int?j)?//判斷弧是否存在

{

ArcNode?*s;

s?=?G-adjlist[i].firstedge;

while(s)

{

if(s-adjvex?==?j)

{

return?OK;

}

s?=?s-next;

}

return?0;

}//AIsBe

Status?GetIn(ALGraph?*G,char?arch,char?arce)?//得到弧的權(quán)值

{

int?i,j;

ArcNode?*s;

Find(G,arch,arce,i,j);

s?=?G-adjlist[i].firstedge;

while(s)

{

if(s-adjvex?==?j)

{

return?(s-info);

}

s?=?s-next;

}

return?0;

}//AIsBe

void?CreatALGraph(ALGraph?*G)//???????????建立圖的鄰接表?

{

int?i,j,k,m;

char?a,arch,arce;

ArcNode?*s;

printf("請(qǐng)輸入頂點(diǎn)數(shù):");

scanf("%d",G-vexnum);???

printf("請(qǐng)輸入弧的條數(shù):");

scanf("%d",G-arcnum);?

printf("下面請(qǐng)輸入圖中的%d個(gè)頂點(diǎn):\n",G-vexnum);

for(i=0;iG-vexnum;i++)

{

fflush(stdin);

printf("輸入第%d個(gè)頂點(diǎn):",i+1);

Get(a);

if(!IsBe(G,a))

{

G-adjlist[i].data?=?a;

G-adjlist[i].firstedge?=?NULL;

}

else

{

printf("頂點(diǎn)%c已存在,請(qǐng)重新",a);

i--;

}

}

printf("下面請(qǐng)輸入圖中的%d條弧:\n",G-arcnum);

for(k=0;kG-arcnum;k++)

{

fflush(stdin);

printf("輸入第%d條弧:",k+1);

Get(arch);Get(arce);TGet(m);

Find(G,arch,arce,i,j);

if(!AIsBe(G,i,j))

{

fflush(stdin);

s=(ArcNode?*)malloc(sizeof(ArcNode));

s-adjvex?=?j;

s-info?=?m;

s-next=G-adjlist[i].firstedge;

G-adjlist[i].firstedge?=?s;

}

else

{

printf("弧%c,%c已存在,請(qǐng)重新",arch,arce);

k--;

}

}

printf("圖的鄰接表儲(chǔ)存結(jié)構(gòu)創(chuàng)建成功!\n");

}//CreatALGraph

void?ACreateALGraph(FILE?*fp,ALGraph?*G)//???????????從文件讀取圖的鄰接表?

{

int?i,j,k,m;

char?a,arch,arce;

ArcNode?*s;

fscanf(fp,?"%d",?G-vexnum);

fscanf(fp,?"%d",?G-arcnum);

for(i=0;iG-vexnum;i++)

{

fflush(stdin);

fscanf(fp,?"%c",?a);

G-adjlist[i].data?=?a;

G-adjlist[i].firstedge?=?NULL;

}

for(k=0;kG-arcnum;k++)

{

fscanf(fp,?"%c",?arch);

fscanf(fp,?"%c",?arce);

fscanf(fp,?"%d",?m);

Find(G,arch,arce,i,j);

s=(ArcNode?*)malloc(sizeof(ArcNode));

s-adjvex?=?j;

s-info?=?m;

s-next=G-adjlist[i].firstedge;

G-adjlist[i].firstedge?=?s;

}

}//ACreateALGraph

void?save(ALGraph?*G)//保存文件

{

FILE?*fp;

int?i,j,k;

ArcNode?*p;

//?打開(kāi)文件

if((fp=fopen("AL.dat",?"wb"))==NULL)

{

printf("數(shù)據(jù)文件打開(kāi)失敗,保存不成功,程序異常退出!\n");

exit(-1);

}

fprintf(fp,?"%d",?G-vexnum);

fprintf(fp,?"?");

fprintf(fp,?"%d",?G-arcnum);

for(i=0;iG-vexnum;i++)????

{

fprintf(fp,?"%c",?G-adjlist[i].data);

}

for(i=0;iG-vexnum;i++)????

{

p?=?G-adjlist[i].firstedge;

while(p?!=?NULL)

{

j?=?p-adjvex;

k?=?p-info;

fprintf(fp,?"%c",?G-adjlist[i].data);

fprintf(fp,?"%c",?G-adjlist[j].data);

fprintf(fp,?"%d",?k);

p?=?p-next?;

}

}

//?關(guān)閉文件

fclose(fp);

printf("圖中的數(shù)據(jù)已經(jīng)成功寫(xiě)入文件!\n");

}//save

void?Traverse(ALGraph?*G)???//輸出鄰接表

{

int?i,j,k;ArcNode?*p;

for(i=0;iG-vexnum;i++)????

{

printf("%2d|",i);

Visit(G-adjlist[i].data);?????

p?=?G-adjlist[i].firstedge;

while(p?!=?NULL)

{

j?=?p-adjvex;

k?=?p-info;?

printf("?★--%2d?%2d",j,k);

p?=?p-next?;

}

printf("?△\n");

}

}//Traverse

void?DFSM(ALGraph?*G,int?i)//深度優(yōu)先遍歷

{

ArcNode?*p;

Visit(G-adjlist[i].data);

visited[i]=1;????????????????

p=G-adjlist[i].firstedge;?????????

while(p)

{

if(!?visited[p-adjvex])

?DFSM(G,p-adjvex);

?p?=?p-next;

}

}//DFSM

void?DFSTraverse(ALGraph?*G)

{

InIt(G,visited);

for(int?j=0;jG-vexnum;j++)

if(!visited[0])

DFSM(G,0);?

}//DFSTraverse

void?BFSTraverse(ALGraph?*G)?????????//廣度優(yōu)先遍歷

{

int?k=0;

int?i,f=0,r=0;

ArcNode?*p;

int?cq[MaxVerNum];

InIt(G,visited);

for(i=0;i=G-vexnum;i++)

cq[i]=-1;

Visit(G-adjlist[k].data);

visited[k]=1;

cq[f]=k;

while(cq[r]!=-1)

{

i=cq[r];

r=r+1;

p=G-adjlist[i].firstedge;

while(p)

{

if(!visited[p-adjvex])?

{

Visit(G-adjlist[p-adjvex].data);

visited[p-adjvex]=1;

f=f+1;?cq[f]=p-adjvex;

}

p=p-next;

}

}???????????????????????????????

}??????//?BFSTraverse

Status?InArc(ALGraph?*G,int?i,int?j,int?k)???//插入一條弧

{

ArcNode?*s;

s=(ArcNode?*)malloc(sizeof(ArcNode));

s-adjvex?=?j;

s-info?=?k;

s-next=G-adjlist[i].firstedge;

G-adjlist[i].firstedge?=?s;

return?OK;

}//InArc

Status?InAr(ALGraph?*G)???//插入一條弧

{

int?i,j,k;

char?arch,arce;

printf("輸入要增加的弧弧尾,弧頭,權(quán)值:\n");

fflush(stdin);

Get(arch);Get(arce);TGet(k);

Find(G,arch,arce,i,j);

if(!AIsBe(G,i,j))

{

InArc(G,i,j,k);

printf("弧%c,%c,%d添加成功!\n",arch,arce,k);

return?OK;

}

else

{

k?=?GetIn(G,arch,arce);

printf("已存在弧%c,%c,%d,請(qǐng)重新",arch,arce,k);

InAr(G);

return?OK;

}

}//InAr

Status?DeArc(ALGraph?*G,int?i,int?j)?//刪除一條弧

{

ArcNode?*s,*ss;

ss?=?G-adjlist[i].firstedge;

if(ss-adjvex?==?j)

{

G-adjlist[i].firstedge?=?ss-next?;

free(ss);

return?OK;

}

else

{

while(ss-next)

{

if(ss-next-adjvex?!=?j)

{

ss?=?ss-next?;

}

else

{

s?=?ss-next?;

ss-next?=?s-next?;

free(s);

return?OK;

}

}

}

return?OK;

}//DeArc

Status?DelArc(ALGraph?*G)

{

int?i,j,h;

char?arch,arce;

fflush(stdin);

printf("輸入要?jiǎng)h除的弧弧尾,弧頭:\n");

Get(arch);Get(arce);h?=?GetIn(G,arch,arce);

Find(G,arch,arce,i,j);

if(AIsBe(G,i,j))

{

DeArc(G,i,j);

printf("弧%c,%c,%d已被刪除\n",arch,arce,h);

return?OK;

}

else

{

printf("弧%c,%c不存在,請(qǐng)重新",arch,arce);

DelArc(G);

return?0;

}

}//DelArc

Status?ModifyArc(ALGraph?*G)???//修改一條弧

{

int?i,j,k,i2,j2,k2,m?=?1;

char?arch,arce,arch2,arce2;

ArcNode?*s;

printf("輸入要修改的弧弧尾,弧頭:\n");

fflush(stdin);

Get(arch);Get(arce);k=GetIn(G,arch,arce);

Find(G,arch,arce,i,j);

if(AIsBe(G,i,j))

{

while(m)

{

printf("輸入修改后的弧弧尾,弧頭,權(quán)值:\n");

fflush(stdin);

Get(arch2);Get(arce2);TGet(k2);

Find(G,arch2,arce2,i2,j2);

if(!AIsBe(G,i2,j2)||(i?==?i2j?==j2))

{

if(i?!=?i2)

{

DeArc(G,i,j);

InArc(G,i2,j2,k2);

}

else

{

s?=?G-adjlist[i].firstedge;

while(s-adjvex?!=?j)

{

s?=?s-next?;

}

s-adjvex?=?j2;

s-info?=?k2;

}

printf("已將弧%c,%c,%d修改為%c,%c,%d!\n",arch,arce,k,arch2,arce2,k2);

m?=?0;

}

else

{

k2?=?GetIn(G,arch,arce);

printf("已存在弧%c,%c,%d,請(qǐng)重新",arch2,arce2,k2);

}

}

return?OK;

}

else

{

printf("弧%c,%c不存在,請(qǐng)重新",arch,arce);

ModifyArc(G);

return?OK;

}

}//ModifyArc

Status?InTop(ALGraph?*G)?//增加一個(gè)頂點(diǎn)

{

int?i;char?a;

printf("輸入要添加的頂點(diǎn):\n");

fflush(stdin);

Get(a);

if(!IsBe(G,a))

{

i?=?G-vexnum++;

G-adjlist[i].data?=?a;

G-adjlist[i].firstedge?=?NULL;

printf("已成功將頂點(diǎn)%c加入圖中!",a);

return?OK;

}

else

{

printf("頂點(diǎn)%c已存在,請(qǐng)重新",a);

InTop(G);

return?OK;

}

}//InTop

Status?DeTop(ALGraph?*G)?//刪除一個(gè)頂點(diǎn)

{

int?i,m;char?a;

ArcNode?*s;

printf("輸入要?jiǎng)h除的頂點(diǎn):\n");

fflush(stdin);

Get(a);

if(IsBe(G,a))

{

FindD(G,a,m);

for(i?=?0;i??G-vexnum?;i++)

{

if(AIsBe(G,i,m))

DeArc(G,i,m);

}

for(i?=?m;i??(G-vexnum)-1?;i++)

{

G-adjlist[i].data?=?G-adjlist[i+1].data;

G-adjlist[i].firstedge?=?G-adjlist[i+1].firstedge?;

}

G-vexnum--;

for(i?=?0;i??G-vexnum?;i++)

{

s?=?G-adjlist[i].firstedge;

if(s?!=?NULL)

while(?s-next!=?NULL)

{

if(s-adjvex?=?m)

(s-adjvex)--;

s?=?s-next?;

}

}

printf("成功將頂點(diǎn)%c刪除!",a);

return?OK;

}

else

{

printf("頂點(diǎn)%c不存在,請(qǐng)重新",a);

DeTop(G);

return?OK;

}

}//DeTop

Status?ModifyTop(ALGraph?*G)

{

int?m;

char?a,b;

printf("輸入要修改的頂點(diǎn):");

fflush(stdin);

Get(a);

if(IsBe(G,a))

{

FindD(G,a,m);

printf("請(qǐng)輸入修改后的頂點(diǎn):");

Get(b);

while(IsBe(G,b))

{

printf("不能修改為已有頂點(diǎn)!請(qǐng)重新輸入:");

Get(b);

}

G-adjlist[m].data?=?b;

printf("已將頂點(diǎn)%c修改為%c",a,b);

return?OK;

}

else

{

printf("頂點(diǎn)%c不存在,請(qǐng)重新",a);

ModifyTop(G);

}

return?OK;

}//ModifyTop

Status?Destroy(ALGraph?*G)

{

for(int?i=0;iG-vexnum;i++)

{

G-adjlist[i].data?=0;

G-adjlist[i].firstedge?=NULL;

}

G-arcnum?=?0;

G-vexnum?=?0;

return?OK;

}//Destroy

void?menu()???????????????????????????????

{

printf("\n");

printf("\t***********0233唐明鄰接表****************\n");

printf("\t*????????1??創(chuàng)建圖的鄰接表儲(chǔ)存結(jié)構(gòu)??????*\n");

printf("\t*????????2??讀取圖的鄰接表儲(chǔ)存結(jié)構(gòu)??????*\n");

printf("\t*????????3??儲(chǔ)存圖的鄰接表儲(chǔ)存結(jié)構(gòu)??????*\n");

printf("\t*????????4??輸出鄰接表數(shù)據(jù)??????????????*\n");

printf("\t*????????5??深度優(yōu)先遍歷圖(DFS)???????*\n");

printf("\t*????????6??廣度優(yōu)先遍歷圖(BFS)???????*\n");

printf("\t*????????7??弧的修改????????????????????*\n");

printf("\t*????????8??頂點(diǎn)的修改??????????????????*\n");

printf("\t*????????9??銷(xiāo)毀整個(gè)圖??????????????????*\n");

printf("\t*????????10?清??????????屏??????????????*\n");

printf("\t*????????0??退??出??程??序??????????????*\n");

printf("\t*****************************************\n");

printf("\t請(qǐng)選擇菜單項(xiàng):");

}

int?main()

{

ALGraph?*G;

G=(ALGraph?*)malloc(sizeof(ALGraph));

FILE?*fp;

int?choice,choice2,choice3;

int?is?=?0;

while(1)

{

start:

menu();

fflush(stdin);

scanf("%d",?choice);

switch(choice)

{

case?1:

if(!is)

{

CreatALGraph(G);

is?=?1;

}

else

{

printf("請(qǐng)先將圖銷(xiāo)毀,再創(chuàng)建新圖");

}

break;

case?2:

if(!is)

{

fp?=?fopen("AL.dat",?"r");

if(fp==NULL)

{

fp?=?fopen("AL.dat",?"w+");

printf("尚未建立AL.dat,圖創(chuàng)建失?。n");

printf("現(xiàn)已建立AL.dat,請(qǐng)先存入數(shù)據(jù)!\n");

break;

}

ACreateALGraph(fp,G);

fclose(fp);

is?=?1;

printf("圖的鄰接表儲(chǔ)存結(jié)構(gòu)創(chuàng)建成功!\n");

}

else

{

printf("請(qǐng)先將圖銷(xiāo)毀,再創(chuàng)建新圖");

}

break;

case?3:

save(G);

break;

case?4:

if(is)

{

printf("鄰接表中的數(shù)據(jù)如下:\n");

printf("下標(biāo)???頂點(diǎn)????鏈表結(jié)點(diǎn)(弧頭下標(biāo),弧的權(quán)值,指針)\n");

Traverse(G);

}

else

printf("尚未創(chuàng)建圖,請(qǐng)先創(chuàng)建");

break;

case?5:

if(is)

{

printf("深度優(yōu)先遍歷如下\n");

DFSTraverse(G);

}

else

printf("尚未創(chuàng)建圖,請(qǐng)先創(chuàng)建");

break;

case?6:

if(is)

{

printf("廣度優(yōu)先遍歷如下\n");

BFSTraverse(G);

}

else

printf("尚未創(chuàng)建圖,請(qǐng)先創(chuàng)建");

break;

case?7:

if(is){

printf("(1?增加?2?刪除?3?修改)");

scanf("%d",choice2);

switch(choice2)

{

case?1:

InAr(G);

goto?start;break;

case?2:

DelArc(G);

goto?start;break;

case?3:

ModifyArc(G);

goto?start;break;

default: goto?start;break;}

}

else

printf("尚未創(chuàng)建圖,請(qǐng)先創(chuàng)建");

break;

case?8:

if(is){

printf("(1?增加?2?刪除?3?修改)");

scanf("%d",choice3);

switch(choice3)

{

case?1:

InTop(G);

goto?start;break;

case?2:

DeTop(G);

goto?start;break;

case?3:

ModifyTop(G);

goto?start;break;

default: goto?start;break;}

}

else

printf("尚未創(chuàng)建圖,請(qǐng)先創(chuàng)建");

break;

case?9:

if(is)

{

Destroy(G);

is?=?0;

printf("圖已銷(xiāo)毀!");

}

else

printf("尚未創(chuàng)建圖,請(qǐng)先創(chuàng)建");

break;

case?10:

system("cls");

break;

case?0:

exit(0);

break;

default:

printf("\t您輸入的菜單項(xiàng)不存在,請(qǐng)重新選擇!\n");

}

}

return?OK;

}

這是在我大一的草稿文件中找到的……完美的被我直接放U盤(pán)上,交了之后刪了。不過(guò)你應(yīng)該夠用了,如果嫌功能多了……自己刪吧,我記得我交上去的有十幾項(xiàng)選項(xiàng),幾十條功能。你第一次運(yùn)行,要么下我傳上去的,要么你先輸入圖,再儲(chǔ)存。因?yàn)闆](méi)有AL.dat文件所以不能直接讀取。

在C語(yǔ)言中編程實(shí)現(xiàn)建立無(wú)向圖的鄰接表,輸出某個(gè)點(diǎn)的鄰接點(diǎn)~!

用矩陣表示無(wú)向圖的,設(shè)有M個(gè)節(jié)點(diǎn),則建立一個(gè)MXM矩陣,對(duì)每個(gè)頂點(diǎn)添加它的鄰接點(diǎn),即每行中對(duì)于有標(biāo)記的列為該行頂點(diǎn)的鄰接點(diǎn)。

用鄰接表表示的圖的輸出(PrintGraph)的算法(C語(yǔ)言)

單鏈表類(lèi)中的輸出流函數(shù)重載,輸出鏈表

圖類(lèi)中再次重載輸出流函數(shù)。

一次頂點(diǎn)表的循環(huán),輸出。

結(jié)果:start,dest,weight,。。。

網(wǎng)頁(yè)標(biāo)題:c語(yǔ)言鄰接表的輸出函數(shù) c語(yǔ)言鄰接表的深度優(yōu)先遍歷
瀏覽路徑:http://jinyejixie.com/article40/dophdeo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、品牌網(wǎng)站制作、建站公司、全網(wǎng)營(yíng)銷(xiāo)推廣網(wǎng)站改版、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷(xiāo)型網(wǎng)站建設(shè)
永嘉县| 常德市| 磐石市| 古蔺县| 鄂温| 大兴区| 砀山县| 大理市| 宜君县| 通渭县| 保靖县| 奉贤区| 大名县| 嵩明县| 龙泉市| 哈密市| 许昌市| 吉木萨尔县| 海城市| 德昌县| 滁州市| 隆子县| 莱西市| 金沙县| 都兰县| 呼玛县| 大邑县| 呈贡县| 哈巴河县| 会昌县| 邹城市| 德江县| 富平县| 延庆县| 城固县| 瑞丽市| 长顺县| 甘谷县| 龙山县| 浠水县| 沛县|