⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 导游图_数据结构与算法_数据结构算法_c语言_c 语言之家.htm

📁 严蔚民版的数据结构的完整课件
💻 HTM
📖 第 1 页 / 共 3 页
字号:
                        width="100%">发表日期:2004年5月12日&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;已经有1734位读者读过此文</TD></TR>
                    <TR>
                      <TD align=middle width="100%"><!--下面的这一句是设置阅读文本区的宽度-->
                        <TABLE align=center border=0 cellPadding=0 cellSpacing=0 
                        style="TABLE-LAYOUT: fixed" width="90%">
                          <TBODY>
                          <TR>
                            <TD align=middle width="100%"></TD></TR>
                          <TR>
                            <TD style="WORD-WRAP: break-word"><FONT 
                              class=news><BR>
                              <P>#include &lt;stdio.h&gt;</P>
                              <P>#define MAX_VERTEX_NUM 10<BR>#define INFINITY 
                              10000<BR>#define MAX MAX_VERTEX_NUM<BR>#define 
                              true&nbsp; 1<BR>#define false 0<BR>#define large 
                              999</P>
                              <P>&nbsp;</P>
                              <P>struct AlGraph{<BR>&nbsp;&nbsp;&nbsp; int 
                              vertices[MAX];<BR>&nbsp;&nbsp;&nbsp; int 
                              vexnum;<BR>&nbsp;&nbsp;&nbsp; int 
                              arcs[MAX][MAX];/*邻接矩阵*/<BR>&nbsp;&nbsp; };</P>
                              <P>char 
                              name[14][20]={<BR>"行政大楼","友谊广场",<BR>"老图书馆",<BR>"樱&nbsp; 
                              园","桂&nbsp; 园",<BR>"计算机学院",<BR>"生命科学学院","人文学院"}; 
                              /*14个景点的名称*/<BR>&nbsp;char 
                              intro[14][100]={<BR>"行政大楼建于国立武汉大学创立之时,许多重要机构都设立在此",<BR>"友谊广场是测绘校区的标志性广场",<BR>"老图书馆古典的建筑风格和很丰富的古典藏书使其成为武汉大学的标志性景点",<BR>"樱园以其樱花而闻名于世",<BR>"桂园是武汉大学的四大园之一",<BR>"武汉大学计算机学院位于测绘校区(信息学部)",<BR>"武汉大学生命科学学院是全国最有名的生物学院之一",<BR>"武汉大学人文学院是全国最出名的几大高校人文学院之一"};/*14个景点的简介*/</P>
                              <P><BR>&nbsp;</P>
                              <P>&nbsp;void acquiry_places (struct AlGraph 
                              G)<BR>{<BR>&nbsp;&nbsp; int i;<BR>&nbsp;&nbsp; 
                              printf(" 所有的景点号及景点名称如下所列: \n");<BR>&nbsp;&nbsp; 
                              for ( 
                              i=0;i&lt;G.vexnum;i++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              { printf( " %d,\t %s \n 
                              ",i+1,name[i]);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if ( i%5==4 
                              )<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {&nbsp; printf(" 请按回车键以继续查看景点名称 
                              \n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              getchar();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp; 
                              printf("请按回车键以继续\n");<BR>&nbsp;&nbsp;&nbsp; 
                              getchar();<BR>}</P>
                              <P><BR>&nbsp; void acquiry_info 
                              ()<BR>&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp; int 
                              i,j;<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("输入你想查询的景点号: 
                              \t");<BR>&nbsp;&nbsp;&nbsp;&nbsp; scanf( 
                              "%d",&amp;j);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("&nbsp;&nbsp; %d,&nbsp;&nbsp;&nbsp; 
                              %s&nbsp;&nbsp; \n",j,name[j-1]); 
                              <BR>&nbsp;&nbsp;&nbsp;&nbsp; printf(" 
                              %s\n",intro[j-1]);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              getchar();<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("请按回车键以继续\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              getchar();<BR>&nbsp; }</P>
                              <P>&nbsp;</P>
                              <P>&nbsp;</P>
                              <P><BR>void shortpath(struct AlGraph 
                              G)<BR>{<BR>&nbsp; int cost[MAX][MAX]; 
                              /*cost[][]记录的是路径长度*/<BR>&nbsp; int dist[MAX]; 
                              /*某源点到各顶点的最短路径长度,dist[k-1]为到所查询的景点的距离,最终只须输出该值 
                              */<BR>&nbsp; int path[MAX]; 
                              /*某源点到终点经过的顶点有序集合的数组,即要输出的内容*/<BR>&nbsp; int 
                              s[MAX]; /*最短路径的终点判定集合,为1则已经包含*/<BR>&nbsp; int 
                              i,j,n,v0,min,u,k;/*u存放最短路径的终点,k记录所要查询的景点终点*/<BR>&nbsp; 
                              int m1,m2; <BR>&nbsp; printf("\n请输入你要查询的景点起点的编号 
                              :");<BR>&nbsp; scanf("%d",&amp;v0);<BR>&nbsp; if( 
                              v0&lt;=0 || v0&gt;G.vexnum )<BR>&nbsp;&nbsp; { 
                              printf("\n 你的输入有错误 
                              \n");<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              exit(-1);<BR>&nbsp;&nbsp; }<BR>&nbsp; 
                              printf("请输入你要到的景点的代号&nbsp; : ");<BR>&nbsp; 
                              scanf("%d",&amp;k);<BR>&nbsp; if( k&lt;=0 || 
                              k&gt;G.vexnum )<BR>&nbsp;&nbsp; { printf("\n 
                              你的输入有错误 \n");<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              exit(-1);<BR>&nbsp;&nbsp; }<BR>&nbsp; printf(" 
                              请按回车键以继续\n");<BR>&nbsp; getchar();<BR>&nbsp; 
                              m1=v0;<BR>&nbsp; m2=k; <BR>&nbsp; v0--;<BR>&nbsp; 
                              k--;<BR>&nbsp; for(i=0;i&lt;G.vexnum;i++)&nbsp; 
                              /*给cost[][]赋初始值*/<BR>&nbsp;&nbsp;&nbsp; { 
                              <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              for(j=0;j&lt;G.vexnum;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              cost[i][j]=G.arcs[i][j];<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp; printf(" 初始值赋值结束 
                              \n");<BR>&nbsp;&nbsp; getchar();<BR>&nbsp;&nbsp; 
                              for(i=0;i&lt;G.vexnum;i++)&nbsp;&nbsp;&nbsp;&nbsp; 
                              /* 所要景点到其他景点的路径长 */<BR>&nbsp;&nbsp;&nbsp; { 
                              dist[i]=cost[v0][i];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(dist[i]&lt;large&amp;&amp;dist[i]&gt;0) 
                              path[i]=v0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              s[i]=0;<BR>&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp; 
                              printf(" 路径求解结束 \n");<BR>&nbsp; 
                              getchar();<BR>&nbsp; clrscr();<BR>&nbsp; 
                              s[v0]=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              /* 记录起始点 */&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              <BR>&nbsp; 
                              for(i=0;i&lt;G.vexnum;i++)<BR>&nbsp;&nbsp;&nbsp; { 
                              min=large;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              u=v0;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              for(j=0;j&lt;G.vexnum;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(s[j]==0&amp;&amp;dist[j]&lt;min)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              {min=dist[j];u=j;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              s[u]=1;&nbsp;&nbsp; 
                              /*u顶点是求得最短路径的顶点编号,置1表示记录下*/<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              for(j=0;j&lt;G.vexnum;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(s[j]==0&amp;&amp;dist[u]+cost[u][j]&lt;dist[j])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              { 
                              dist[j]=dist[u]+cost[u][j];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              path[j]=u;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp; 
                              printf("输出 % s 到各个景点的距离&nbsp; \n" 
                              ,name[m1-1]);<BR>&nbsp; 
                              for(i=0;i&lt;G.vexnum;i++)<BR>&nbsp;&nbsp;&nbsp; 
                              if(i!=m1-1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("&nbsp; %d米&nbsp; \t&nbsp;&nbsp; %s 
                              \n",dist[i],name[i]);<BR>&nbsp;getchar();&nbsp;&nbsp;&nbsp; 
                              <BR>printf("\n 顶点 %s 到 %s 的最短路径长度为和途径如下 
                              :\n",name[m1-1],name[m2-1]);</P>
                              <P>&nbsp; getchar();<BR>&nbsp; 
                              i=m1;/*输出结果*/<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("%s\t",name[u]);<BR>&nbsp;&nbsp;&nbsp;&nbsp; 
                              if(s[i]==1)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              { 
                              u=i;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              while(u!=v0)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              { 
                              getchar();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("中间途经---%s&nbsp; 
                              ",name[u]);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              u=path[u];<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              } 
                              <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("\n&nbsp; 路径长度是%d米&nbsp; 
                              ",dist[i]);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf(" \n 输出结束 
                              \n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              getchar();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>}</P>
                              <P><BR>&nbsp; main()<BR>{ int i,j;<BR>&nbsp; 
                              struct AlGraph G;<BR>&nbsp; G.vexnum=8;<BR>&nbsp; 
                              clrscr();<BR>&nbsp; /* 初始化邻接矩阵 */<BR>&nbsp; 
                              for(i=0;i&lt;G.vexnum;i++)<BR>&nbsp;&nbsp; 
                              for(j=0;j&lt;G.vexnum;j++)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              G.arcs[i][j]=INFINITY;<BR>&nbsp; 
                              for(i=0;i&lt;G.vexnum;i++)<BR>&nbsp;&nbsp;&nbsp; 
                              G.arcs[i][i]=0;<BR>&nbsp;&nbsp; /* 有直通路径的赋值 
                              */<BR>&nbsp; G.arcs[0][1]=200;&nbsp;&nbsp; 
                              G.arcs[0][2]=100;&nbsp;&nbsp;&nbsp; 
                              G.arcs[0][3]=400;&nbsp;&nbsp;&nbsp; 
                              G.arcs[0][4]=200;&nbsp;&nbsp;&nbsp;&nbsp; 
                              <BR>&nbsp; G.arcs[1][0]=200;&nbsp;&nbsp; 
                              G.arcs[1][2]=100;&nbsp;&nbsp;&nbsp; 
                              G.arcs[1][5]=400;&nbsp;&nbsp;&nbsp; 
                              G.arcs[1][6]=200;<BR>&nbsp; 
                              G.arcs[2][0]=100;&nbsp;&nbsp; 
                              G.arcs[2][1]=100;&nbsp;&nbsp;&nbsp; 
                              G.arcs[2][3]=200;&nbsp;&nbsp;&nbsp; <BR>&nbsp; 
                              G.arcs[3][0]=400;&nbsp;&nbsp; 
                              G.arcs[3][2]=200;&nbsp;&nbsp;&nbsp; 
                              G.arcs[3][4]=200;&nbsp;&nbsp;&nbsp; 
                              G.arcs[3][6]=300;&nbsp;&nbsp;&nbsp; 
                              G.arcs[3][7]=400;<BR>&nbsp; 
                              G.arcs[4][0]=200;&nbsp;&nbsp; 
                              G.arcs[4][3]=200;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              <BR>&nbsp; G.arcs[5][1]=400;&nbsp;&nbsp; 
                              G.arcs[5][6]=200;&nbsp; <BR>&nbsp; 
                              G.arcs[6][1]=200;&nbsp;&nbsp; 
                              G.arcs[6][3]=300;&nbsp;&nbsp;&nbsp; 
                              G.arcs[6][5]=200;&nbsp;&nbsp;&nbsp; 
                              G.arcs[6][7]=100;&nbsp;&nbsp; <BR>&nbsp; 
                              G.arcs[7][3]=400;&nbsp;&nbsp; 
                              G.arcs[7][6]=100;&nbsp;&nbsp;&nbsp; <BR>&nbsp; 
                              <BR>&nbsp; printf(" 景点的数目是 : %d 
                              \n",G.vexnum);<BR>&nbsp; getchar();<BR>&nbsp;loop: 
                              clrscr();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              武汉大学景点查询&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              \n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("*********************************************************\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf(" 
                              1.输出所有的景点&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              \n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf(" 
                              2.输出你所选择的景点相关信息:\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf(" 3.获取所选景点间的最短路径: 
                              \n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf(" 
                              4.退出&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              \n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf("*********************************************************\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              printf(" 请选择: \t");<BR>&nbsp;<BR>&nbsp;&nbsp; 
                              <BR>&nbsp; scanf(" %d",&amp;i );<BR>&nbsp; 
                              switch(i)<BR>&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp; case 
                              1 : 
                              acquiry_places(G);break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              case 2 : 
                              acquiry_info();break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              case 3 : shortpath (G) 
                              ;break;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              case 4 : 
                              exit(0);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
                              default: printf(" 
                              错误的输入:\n");<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp; 
                              <BR>&nbsp; goto 
                          loop;<BR>}</P><BR></FONT></TD></TR></TBODY></TABLE></TD></TR>
                    <TR>
                      <TD height=25 width="100%">
                        <DIV align=center></DIV></TD></TR>
                    <TR>
                      <TD height=20 width=255><A class=bottom 
                        href="http://www.cstudyhome.com/wenzhang06/review.asp?NewsID=3446" 
                        target=_blank>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG 
                        border=0 height=18 
                        src="导游图_数据结构与算法_数据结构算法_C语言_C 语言之家.files/icon1.gif" 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -