已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据通信与通信网技术课 程 设 计 指 导 书一、课程设计的目的本课程设计是学习数据通信与通信网技术课程必要的教学环节。由于该课程是专业必修课,需要通过实践巩固基础知识,为使学生取得最现代化的设计技能和研究方法,课程设计训练也就成为了一个重要的教学环节。通过对路由算法的设计和实现,达到进一步完善对通信网基础及应用课程学习的效果。二、课程设计的基本要求课程设计是分阶段分步完成的,各阶段的要求和安排如下:1、指导教师发放题目,学生根据题目查找有关资料和书籍,在同课题组的同学对于某些难点、关键问题可以互相讨论,共同研究。2、学生根据自己的题目和有关参考资料,独立进行构思和分析,制订整体设计方案,进行详细设计。3、书写课程设计报告,按规定时间交指导教师评审,给出课程设计综合成绩。三、课程设计的主要内容通过对最短路径算法的学习与分析,掌握常用算法的基本思想并通过开发工具进行实现。课程设计主要内容是:任选一个最短路径算法,每个人完成一个算法的程序设计、调试,实现,应提供包括下述内容的课程设计总结报告:1、任务书:说明算法的基本思想;2、程序设计及调试过程总结(需指出解决所遇到问题的途径)。参考题目:基于VC的最短路径Dijkstra算法的实现。1、增加对仿真软件的认识,学会对各种软件的操作和使用方法;2、加深理解路径算法的概念;3、初步掌握系统的设计方法,培养独立工作能力。参考程序如下:#include/ 定义 状态代码 及 数据类型#define NULL 0#define OK 1#define ERROR 0#define INFINITY 255#define MAX_VERTEX_NUM 20typedef int Status;typedef int ElemType;/ - 队列结构 -/ 节点存储结构typedef struct QNode ElemType data; struct QNode *next;QNode,*QueuePtr;/ 队列typedef struct QueuePtr front; QueuePtr rear;LinkQueue;/ 初始化队列Status InitQueue(LinkQueue &Q) Q.front=Q.rear=new QNode; if(!Q.front) return ERROR; Q.front-next=NULL; return OK;/ 入队Status EnQueue(LinkQueue &Q,ElemType e) QueuePtr p=NULL; p=new QNode; if(!p) return ERROR; p-data=e; p-next=NULL; Q.rear-next=p; Q.rear=p; return OK;/ 出队Status DeQueue(LinkQueue &Q,ElemType &e) QueuePtr p=NULL; if(Q.front=Q.rear) return ERROR; p=Q.front-next; e=p-data; Q.front-next=p-next; if(Q.rear=p) / 注意当出队后为空队的情况 Q.rear=Q.front; delete p; return OK;/ 判断是否为空队列Status EmptyQueue(LinkQueue &Q) return Q.front=Q.rear?true:false;/ 复制队列(copy Q1 to Q2)Status CopyQueue(LinkQueue &Q1,LinkQueue &Q2) int e; QueuePtr p; while(!EmptyQueue(Q2) / clean Q2 DeQueue(Q2,e); / copy one by one p=Q1.front-next; while(p) e=p-data; p=p-next; EnQueue(Q2,e); return OK;/ - 图的结构:邻接矩阵(有向网) -/ 邻接矩阵元素typedef struct ArcCell int adj; / arc value: 0, INFINITY: no link char *info; AcrCell,AdjMatrixMAX_VERTEX_NUMMAX_VERTEX_NUM;/ 图的结构 typedef struct char vexsMAX_VERTEX_NUM5; / 顶点数组 AdjMatrix arcs; / 邻接矩阵 int vexnum; / 图当前的顶点数 int arcnum; / 图当前边的个数MGraph;/ 建立邻接图(key=1为有向网,key=0为无向网)Status CreateUDN(MGraph &G,int vexnum,int edgenum,char *names,char *edges,int key) int i,j,k,value; / 输入当前图的顶点数,边个数 G.vexnum=vexnum; G.arcnum=edgenum; / 各个顶点数据 for(i=0;iG.vexnum;+i) for(j=0;j4;j+) G.vexsij=*names; names+; G.vexsi4=0; / 初始化邻接矩阵(全为INFINITY) for(i=0;iMAX_VERTEX_NUM;+i) for(j=0;jMAX_VERTEX_NUM;+j) G.arcsij.adj=INFINITY; G.=NULL; / 建立邻接矩阵每条边的数值 for(k=0;kG.arcnum;+k) i=int(*edges)-48; edges+; j=int(*edges)-48; edges+; value=(int(*edges)-48)*10; edges+; value+=int(*edges)-48; edges+; G.arcsij.adj=value; if(!key) G.arcsji.adj=value; return OK;/ 打印出邻接矩阵void PrintGraph(MGraph &G) int i,j; coutn/- PrintMatrix -/nn ; for(i=0;iG.vexnum;+i) coutG.vexsi ; coutendl; for(i=0;iG.vexnum;+i) coutnnG.vexsi ; for(j=0;jG.vexnum;+j) if(G.arcsij.adj=INFINITY) cout / ; else cout G.arcsij.adj ; coutnn/- PrintMatrix -/n;/ - 求源点v0到各点的最短路径 -/void ShortestPath(MGraph &G,int v0) int DMAX_VERTEX_NUM,finalMAX_VERTEX_NUM,i,w,v=0,min; / 建立队列数组,用以依次储存最短的路径 LinkQueue QMAX_VERTEX_NUM; / 初始化数组 for(i=0;iG.vexnum;+i) InitQueue(Qi); Di=G.arcsv0i.adj; finali=false; finalv0=true; / 一个一个循环找出最短距离(共vexnum1个) for(i=1;iG.vexnum;+i) min=INFINITY; / 扫描找出非final集中最小的D for(w=0;wG.vexnum;+w) if(!finalw & Dwmin) v=w; min=Dw; finalv=true; / 更新各D数据 for(w=0;wG.vexnum;+w) if(!finalw & G.arcsvw.adj+minDw) Dw=G.arcsvw.adj+min; CopyQueue(Qv,Qw); EnQueue(Qw,v); / 打印出结果 cout/- ShortestPath -/nn; cout目的地t最短距离t详细路径nn; for(i=0;iG.vexnum;i+) if(Di!=INFINITY) cout G.vexsv0 G.vexsittDi tt; coutG.vexsv0; while(!EmptyQueue(Qi) DeQueue(Qi,v); cout G.vexsv; cout G.vexsiendl; else cout G.vexsv0 G.vexsittNo path!n; coutn/- ShortestPath -/n;void PrintCity(char *names,int vexnum) int i,j; cout列表:nn; for(i=0;ivexnum;+i) cout i-; for(j=0;j4;j+) cout*names; names+; cout ; cout; void main() MGraph G; / 图的结构数据 char *edges,*names; int vexnum,arcnum,city,kind; vexnum=6; arcnum=10; names=A1 A2 A3 A4 A5 A6; edges=0103030505071205150623082403430152085407; do PrintCity(names,vexnum); cincity; cout; do cinkind; if(kind=0 & kind =3) CreateUDN(G,vexnum,arcnum,names,edges,kind%2); switch(kind/2) case 0:ShortestPath(G,city); break; case 1:PrintGraph(G); break; cout; while(ki
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年清远辅警协警招聘考试真题附答案详解(轻巧夺冠)
- (完整版)圆柱、圆锥的表面积和体积练习试题
- 2025年郴州辅警协警招聘考试真题附答案详解(培优)
- 2025年荆州辅警招聘考试真题含答案详解(达标题)
- 2025年莆田辅警招聘考试题库有完整答案详解
- 2025年舟山辅警协警招聘考试真题及答案详解(基础+提升)
- 2025年荆州辅警招聘考试真题含答案详解(完整版)
- 2025年湘潭辅警招聘考试真题含答案详解(模拟题)
- 2025年甘南州辅警招聘考试真题含答案详解(基础题)
- 2025年璧山县辅警招聘考试题库附答案详解(典型题)
- 安全生产巡查办法
- 物业危险源知识培训课件
- 天然气销售常识知识培训课件
- 军人心理适应知识培训课件
- 2025云南楚雄州元谋县国有资产投资管理有限公司招聘工作人员18人笔试历年参考题库附带答案详解
- T/CAPE 10108-2024设备设施报废管理指南
- 2025年中国匹克球设备行业市场全景分析及前景机遇研判报告
- 与客户供应商应急沟通联络预案
- 国家级教改课题申报书
- 排水沟工程施工合同协议书6篇
- 2025四川高考政治试题解读及2026备考策略指导课件
评论
0/150
提交评论