西安郵電學院。
题目: 校园导游系统。
院系名称计算机学院。
专业名称计算机科学与技术。
班级计科1106
学生姓名崔斌。
学号(8位04111185
指导教师王春梅。
设计起止时间:2024年12月17日~2024年12月21日。
一。 设计目的。
①:为了让非本校的同学们,家长们能够充分了解本校---西安邮电大学。
②:实践数据结构所学知识。
二。 设计内容。
①:学校简易的俯视图。
②:各个景点的简单介绍。
③:任意两景点之间的所有路径。
④:任意两景点之间的最少中转景点路径。
⑤:任意两景点之间的带权路径长度。
三.概要设计。
init();初始化两个顺序栈。
menu();进行选择的模块函数;
intro();景点介绍函数;
search();判断是否有此编号的景点;
findallpath();找路径函数;
findallway();找任意两个景点之间的所有路径;(存在栈里面)
shortestway();任意两个景点之间中转次数最少的路径;(从栈里面读取出来)
niceway();任意两个景点之间总权值最小的路径;(从栈里面读取出来)
calculate();从栈里面读取出来相关数据),进行分析运算;
byebye();你懂得!
/思想;递归结合循环,然后,找到终点时还要回溯;
void findallway(adjlist *g,int m,int n)//两点之间的所有路径。
int i,t,k;
arcnode *p;
pa_th rp;
push(s,m);
g->vertex[m-1].flag=1;
if(m==n)
elsefor(p=g->vertex[m-1].firstarc;p!=null;p=p->nextarc)
g->vertex[s->elem[s->top]-1].flag=0;//两句顺序不可以调换。
pops(s);
/从文件里读取数据;
错误1;不知道此节点有几个邻接点,因为%s的原因,就会只把第一个节点的相关数据读出来,从第二个节点的相关信息处,开始读出错误(即烫烫烫烫烫烫烫烫烫烫烫);为此,我在文件里面加了此节点的邻接点个数m,readnet()里面又有count相加以监视不超过m;
错误2;读文件时,因为有链表的部分,就按照单链表的创建些写,结果总是此节点的最后一个邻接点没被读到内存里,究其原因,是最后一个p1没有连接到此条链表的尾部,(不仅我把p2->nextarc=null;还把free(p1);)
void readnet(adjlist *g)
int i,count,m;
arcnode *head,*p2,*p1;
file *fp;
fp=fopen(u,"rt");
if(fp==null)
for(i=0;i
p2->nextarc=p1;//千万不能忘掉此语句,令人蛋碎一地呀。
p2=p1;//千万不能忘掉此语句,令人蛋碎一地呀,否则会丢掉每个节点的最后一个邻接点。
p2->nextarc=null;
free(p1);/千万不能有此语句,令人蛋碎一地呀。
g->vertex[i].firstarc=head->nextarc;
fclose(fp);
五.测试数据及运行结果。
1. 正常测试数据(3组)及运行结果;
六.调试情况,设计技巧及体会。
1.对自己的设计进行评价,指出合理和不足之处,提出改进方案;
2.对设计及调试过程的心得体会。
七.参考文献。
1]《c语言程序设计第二版》--王曙燕 --北京:科学出版社 –2008
《数据结构—用c语言描述》—耿国华—北京:高等教育出版社--2011
八.附录:#include""
#include""
#include""
#define max_vertex_num 30
#define h (arcnode *)malloc(sizeof(arcnode))
#define u ""
#define o (linkstacknode *)malloc(sizeof(linkstacknode))
typedef struct arcnode
int num;//编号。
int weight;//顶点与此点之间路径的权值。
struct arcnode *nextarc;
arcnode;
typedef struct vertexnode
int num;//编号。
char name[20];/顶点景点名称。
char introduce[40];/景点简介。
int sum;//与他连接的景点个数 //令人蛋疼的读文件呀。
int flag;//默认为0,刚好可以标志。
arcnode *firstarc;
vertexnode;
typedef struct aa
vertexnode vertex[max_vertex_num];/顶点数组。
int other;//备用。
adjlist;
void menu(adjlist *g);
void intro(adjlist *g);
int search(adjlist *g,int s);
void findallpath(adjlist *g);
void findallway(adjlist *g,int m,int n);
void byebye();
void readnet(adjlist *g);
void map();
void shortestway(adjlist *g);
int calculate(adjlist *g);
void niceway(adjlist *g);
void findweight(adjlist *g,int m,int n);
seqstacki w,*s=&w;
seqstackpath z;
int vnum=13;
main()
adjlist q,*g=&q;
initstack(s);
initstack1(&z);
readnet(g);/读出文件。
map();
//printf("%d",g->vertex[4].firstarc->nextarc->nextarc->weight);
menu(g);
void menu(adjlist *g)
int choice;
map();
printf("n");
printf("查看景点信息。
printf("查寻两景点之间的路径。
printf("一 ●③退出系统。
printf("n");
printf("\t\t你想选择?请选择(1-3):"
scanf("%d",&choice);
while(choice<1||choice>3)
switch(choice)
void intro(adjlist *g)//景点信息。
数据结构课程设计报告格式
本科课程设计 报告 院 系。专业。学生姓名。学号。任课教师吴瑕。提交日期。题目。1.问题描述 2.数据结构描述 如 可参考课本p50 1 每个多项式必须用单链表来存储 typedef struct node float coef系数。int exp指数。struct node next指向下个结点的...
数据结构课程设计报告格式
西安郵電學院。题目 校园导游系统。院系名称 专业名称 班级 学生姓名 学号 8位 指导教师王春梅。设计起止时间 2011年12月12日 2011年12月16日。一。设计目的。二。设计内容。三 概要设计。1 功能模块图 2 各个模块详细的功能描述。四 详细设计。1 功能函数的调用关系图 2 各功能函数...
数据结构课程设计报告格式
题目猴子选大王。学生姓名。学号。专业班级。指导老师。设计日期 2009年12月19日。指导老师评阅意见 一 问题定义。1 课程设计目的 数据结构课程设计是学习数据结构课程的一个重要环节。能巩固和加深课堂教学内容,提高学生实际工作能力,培养科学作风,为学习后续课程和今后的系统开发奠定基础。通过课程设计...