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ě)入流式文件中.
沒(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文件所以不能直接讀取。
用矩陣表示無(wú)向圖的,設(shè)有M個(gè)節(jié)點(diǎn),則建立一個(gè)MXM矩陣,對(duì)每個(gè)頂點(diǎn)添加它的鄰接點(diǎn),即每行中對(duì)于有標(biāo)記的列為該行頂點(diǎn)的鄰接點(diǎn)。
單鏈表類(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)