1、 1 数据结构大作业报告数据结构大作业报告 班级:班级: 课程设计日期:课程设计日期:2014.1.62014.1.62014.1.102014.1.10 2 校园导游咨询校园导游咨询 (一)(一) 任务分工任务分工 王静:查询景点间最短路径 瞿晓凤:查询景点信息 韦成:景点路径查询 (二二) 设计思路设计思路 1首先用邻接矩阵存储校园图。 2 用数据结构知识创建校园图。 3. 手动给校园图赋上相关信息(景点名称、代号、简介) ,路径及路 径长度。 4利用 C 语言知识编写查找景点相关信息的程序。 5利用迪杰斯特拉算法计算任意两点之间的最短路径。 6最后用一个主函数 main输出各项结果。 (
2、三三) 问题描述及分析:问题描述及分析: (1)设计你所在的学校的校园平面图,所含景点不少于十个.以图中顶点表示校园内各 景点,存放景点的名称,代号.简介等信息;以边表示路径,存放路径长度等信息. (2)为来访的客人提供图中任意相关信息的查询. (3为来访的客人提供图中任意景点的问路查询,即查询任意两个景点的问路查询,即查 询任意两个景点之间的简单路径) 1:创建校园图 (1) 先定义节点个数 N,边的最大值,节点,邻接点,边,定点,向量,当前顶点数和边数.1 (2) 先给一个节点附上其相关信息,然后再申请下一个节点, 再给所申请的节点附上 相关信息,直到节点数为零为止。 (3) 读入道路的起
3、始点,为邻接矩阵的边幅相应的值。 (4) 节点和边的相关信息都弄好了,校园图也就创建好了。 2: 利用函数来查找景点信息,要查找景点名称时调用 NAME 函数,要查找景点介绍 信息时调用 INFORMATION 函数。 3: 手动创建一个校园图,然后为相应的边附上真正的值 4 : 用 PATH 函数来求任意两景点之间的最短路径。 5: 用 MAIN 函数来输出结果:用 SWITCH 语句分别输出,要创建校园图时调用 CREATGRAPH 函数;要查找任意两景点之间的最短路径时,先输入你目前所在 位置,再输入你的目的地,最后调用 PATH 函数 3 (三三)我所负责的程序块:我所负责的程序块:
4、int While(MGraph G,int k,int j) if(k14)|(j14) printf(“景点编号不存在!请重新输入!n“); return 1; if(k=j) printf(“出发点和目的地一样!请重新输入!n“); return 1; return 0; /输入的数据合法故将 flag = 0 int locatevex(MGraph G,int v) int i; for(i=1;i表示所编程序的代码 表示可运行的程序 (2) 【数据结构】中央广播电视大学出版社 【数据结构】中国水利水电出版社 8 表达式求解表达式求解 (一)(一) 任务分工任务分工 瞿晓凤:定义
5、栈,栈用于存放操作,取栈顶元素。 王 静:判断运算符优先权,返回优先权高的,操作函数。 韦 成:运算函数。 (二)(二) 问题描述及分析:问题描述及分析: 使用两个工作栈,一个用来寄存运算符,另一个用来寄存操作数或操作结果。在操作数和操 作符入栈前,通过一个函数来判别输入的是操作数还是操作符,在输入表达式的最后输入 “=” ,设定“=”的优先级最低,代表表达式的输入结束。在表达式输入过程中,遇到操作 数直接入栈,遇到运算符则与栈顶运算符比较优先级,若当前运算符优先级高,则当前运算 符入栈, 扫描下一符号; 否则栈顶运算符出栈, 两操作数出栈, 进行运算, 所得结果入数栈, 重新比较当前运算符与
6、新栈顶运算符。如此重复直到栈顶运算符与当前符号均为“=” ,运 算结束。 9 (三)(三) 我做的部分我做的部分 int EvaluateExpression() /求值 10 SqStack OPND; SqStack OPTR; char a=0; char theta; int b,c,number=0; InitStack( InitStack( Push( a=getchar(); while(a!=# | GetTop( while(!In(a) number=number*10+(a-48); /处理连续几个整数,方法: z=10*x+y (运用了 ascll码,0=48) a=getchar(); Push( else switch(Precede(a,GetTop( c=Pop( b=Pop( Push( break