数据结构实训报告
数据结构实验报告_实验报告_

数据结构实验报告想必学计算机专业的同学都知道数据结构是一门比较重要的课程,那么,下面是小编给大家整理收集的数据结构实验报告,供大家阅读参考。
数据结构实验报告1一、实验目的及要求1)掌握栈和队列这两种特殊的线性表,熟悉它们的特性,在实际问题背景下灵活运用它们。
本实验训练的要点是“栈”和“队列”的观点;二、实验内容1) 利用栈,实现数制转换。
2) 利用栈,实现任一个表达式中的语法检查(选做)。
3) 编程实现队列在两种存储结构中的基本操作(队列的初始化、判队列空、入队列、出队列);三、实验流程、操作步骤或核心代码、算法片段顺序栈:Status InitStack(SqStack &S){S.base=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemTyp e));if(!S.base)return ERROR;S.top=S.base;S.stacksize=STACK_INIT_SIZE;return OK;}Status DestoryStack(SqStack &S){free(S.base);return OK;}Status ClearStack(SqStack &S){S.top=S.base;return OK;}Status StackEmpty(SqStack S){if(S.base==S.top)return OK;return ERROR;}int StackLength(SqStack S){return S.top-S.base;}Status GetTop(SqStack S,ElemType &e){if(S.top-S.base>=S.stacksize){S.base=(ElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemTyp e));if(!S.base) return ERROR;S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;}*S.top++=e;return OK;Status Push(SqStack &S,ElemType e){if(S.top-S.base>=S.stacksize){S.base=(ElemType*)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(ElemTyp e));if(!S.base)return ERROR;S.top=S.base+S.stacksize;S.stacksize+=STACKINCREMENT;}*S.top++=e;return OK;}Status Pop(SqStack &S,ElemType &e){if(S.top==S.base)return ERROR;e=*--S.top;return OK;}Status StackTraverse(SqStack S){ElemType *p;p=(ElemType *)malloc(sizeof(ElemType));if(!p) return ERROR;p=S.top;while(p!=S.base)//S.top上面一个...p--;printf("%d ",*p);}return OK;}Status Compare(SqStack &S){int flag,TURE=OK,FALSE=ERROR; ElemType e,x;InitStack(S);flag=OK;printf("请输入要进栈或出栈的元素:"); while((x= getchar)!='#'&&flag) {switch (x){case '(':case '[':case '{':if(Push(S,x)==OK)printf("括号匹配成功!\n\n"); break;case ')':if(Pop(S,e)==ERROR || e!='('){printf("没有满足条件\n");flag=FALSE;}break;case ']':if ( Pop(S,e)==ERROR || e!='[')flag=FALSE;break;case '}':if ( Pop(S,e)==ERROR || e!='{')flag=FALSE;break;}}if (flag && x=='#' && StackEmpty(S)) return OK;elsereturn ERROR;}链队列:Status InitQueue(LinkQueue &Q) {Q.front =Q.rear=(QueuePtr)malloc(sizeof(QNode));if (!Q.front) return ERROR;Q.front->next = NULL;return OK;}Status DestoryQueue(LinkQueue &Q) {while(Q.front){Q.rear=Q.front->next;free(Q.front);Q.front=Q.rear;}return OK;}Status QueueEmpty(LinkQueue &Q){if(Q.front->next==NULL)return OK;return ERROR;}Status QueueLength(LinkQueue Q){int i=0;QueuePtr p,q;p=Q.front;while(p->next){i++;p=Q.front;q=p->next;p=q;}return i;}Status GetHead(LinkQueue Q,ElemType &e) {QueuePtr p;p=Q.front->next;if(!p)return ERROR;e=p->data;return e;}Status ClearQueue(LinkQueue &Q){QueuePtr p;while(Q.front->next ){p=Q.front->next;free(Q.front);Q.front=p;}Q.front->next=NULL;Q.rear->next=NULL;return OK;}Status EnQueue(LinkQueue &Q,ElemType e) {QueuePtr p;p=(QueuePtr)malloc(sizeof (QNode));if(!p)return ERROR;p->data=e;p->next=NULL;Q.rear->next = p;Q.rear=p; //p->next 为空return OK;}Status DeQueue(LinkQueue &Q,ElemType &e) {QueuePtr p;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; //只有一个元素时(不存在指向尾指针) free (p);return OK;}Status QueueTraverse(LinkQueue Q){QueuePtr p,q;if( QueueEmpty(Q)==OK){printf("这是一个空队列!\n");return ERROR;}p=Q.front->next;while(p){q=p;printf("%d<-\n",q->data);q=p->next;p=q;}return OK;}循环队列:Status InitQueue(SqQueue &Q){Q.base=(QElemType*)malloc(MAXQSIZE*sizeof(QElemType)); if(!Q.base)exit(OWERFLOW);Q.front=Q.rear=0;return OK;}Status EnQueue(SqQueue &Q,QElemType e){if((Q.rear+1)%MAXQSIZE==Q.front)return ERROR;Q.base[Q.rear]=e;Q.rear=(Q.rear+1)%MAXQSIZE;return OK;}Status DeQueue(SqQueue &Q,QElemType &e){if(Q.front==Q.rear)return ERROR;e=Q.base[Q.front];Q.front=(Q.front+1)%MAXQSIZE;return OK;}int QueueLength(SqQueue Q){return(Q.rear-Q.front+MAXQSIZE)%MAXQSIZE;}Status DestoryQueue(SqQueue &Q){free(Q.base);return OK;}Status QueueEmpty(SqQueue Q) //判空{if(Q.front ==Q.rear)return OK;return ERROR;}Status QueueTraverse(SqQueue Q){if(Q.front==Q.rear)printf("这是一个空队列!");while(Q.front%MAXQSIZE!=Q.rear){printf("%d<- ",Q.base[Q.front]);Q.front++;}return OK;}数据结构实验报告2一.实验内容:实现哈夫曼编码的生成算法。
数据结构实验实训报告范文

一、实验目的1. 理解并掌握数据结构的基本概念和常用算法。
2. 学会使用C语言实现线性表、栈、队列、树和图等基本数据结构。
3. 培养动手实践能力,提高编程水平。
二、实验内容1. 线性表(1)顺序表(2)链表2. 栈(1)顺序栈(2)链栈3. 队列(1)顺序队列(2)链队列4. 树(1)二叉树(2)二叉搜索树5. 图(1)邻接矩阵表示法(2)邻接表表示法三、实验环境1. 操作系统:Windows 102. 编程语言:C语言3. 编译器:Visual Studio 20194. 实验软件:C语言开发环境四、实验步骤1. 线性表(1)顺序表1)定义顺序表结构体2)实现顺序表的初始化、插入、删除、查找等基本操作3)编写测试程序,验证顺序表的基本操作(2)链表1)定义链表结构体2)实现链表的创建、插入、删除、查找等基本操作3)编写测试程序,验证链表的基本操作2. 栈(1)顺序栈1)定义顺序栈结构体2)实现顺序栈的初始化、入栈、出栈、判空等基本操作3)编写测试程序,验证顺序栈的基本操作(2)链栈1)定义链栈结构体2)实现链栈的初始化、入栈、出栈、判空等基本操作3)编写测试程序,验证链栈的基本操作3. 队列(1)顺序队列1)定义顺序队列结构体2)实现顺序队列的初始化、入队、出队、判空等基本操作3)编写测试程序,验证顺序队列的基本操作(2)链队列1)定义链队列结构体2)实现链队列的初始化、入队、出队、判空等基本操作3)编写测试程序,验证链队列的基本操作4. 树(1)二叉树1)定义二叉树结构体2)实现二叉树的创建、遍历、查找等基本操作3)编写测试程序,验证二叉树的基本操作(2)二叉搜索树1)定义二叉搜索树结构体2)实现二叉搜索树的创建、遍历、查找等基本操作3)编写测试程序,验证二叉搜索树的基本操作5. 图(1)邻接矩阵表示法1)定义邻接矩阵结构体2)实现图的创建、添加边、删除边、遍历等基本操作3)编写测试程序,验证邻接矩阵表示法的基本操作(2)邻接表表示法1)定义邻接表结构体2)实现图的创建、添加边、删除边、遍历等基本操作3)编写测试程序,验证邻接表表示法的基本操作五、实验结果与分析1. 线性表(1)顺序表实验结果表明,顺序表的基本操作实现正确,测试程序运行稳定。
数据结构实训论文总结报告

摘要:本文通过对数据结构实训的深入学习和实践,总结了实训过程中的心得体会,对链表、栈、队列、树等常见数据结构进行了详细的分析,探讨了数据结构在实际问题中的应用。
通过实训,提高了数据结构的理解和运用能力,为今后的学习和工作打下了坚实的基础。
一、引言数据结构是计算机科学中一个重要的基础学科,它研究数据的存储、组织、检索和操作。
掌握数据结构对于解决实际问题具有重要意义。
本次实训旨在通过实际操作,加深对数据结构理论知识的理解,提高编程能力,培养解决实际问题的能力。
二、实训内容1. 链表链表是一种常见的数据结构,由一系列节点组成,每个节点包含一个数据和指向下一个节点的指针。
实训过程中,我们学习了链表的创建、插入、删除、查找等操作。
通过实现链表,我们了解了链表在解决实际问题中的应用,如实现动态数组、栈、队列等。
2. 栈栈是一种后进先出(LIFO)的数据结构,只允许在一端进行插入和删除操作。
实训中,我们学习了栈的创建、入栈、出栈、判空等操作。
通过实现栈,我们了解了栈在表达式求值、函数调用栈等场景中的应用。
3. 队列队列是一种先进先出(FIFO)的数据结构,只允许在一端进行插入操作,在另一端进行删除操作。
实训中,我们学习了队列的创建、入队、出队、判空等操作。
通过实现队列,我们了解了队列在广度优先搜索、进程调度等场景中的应用。
4. 树树是一种非线性数据结构,由节点组成,节点之间有父子关系。
实训中,我们学习了二叉树、二叉搜索树、堆等常见树结构。
通过实现树,我们了解了树在查找、排序、优先队列等场景中的应用。
三、实训心得体会1. 理论与实践相结合通过本次实训,我深刻体会到理论与实践相结合的重要性。
在理论学习阶段,我们学习了数据结构的基本概念、原理和方法,但仅有理论知识是远远不够的。
通过实际操作,我们能够更好地理解数据结构的内涵,提高编程能力。
2. 代码规范与优化在实训过程中,我们遵循代码规范,注意代码的可读性和可维护性。
数据结构实验报告2篇

数据结构实验报告数据结构实验报告精选2篇(一)实验目的:1. 熟悉数据结构的基本概念和基本操作;2. 掌握线性表、栈、队列、链表等经典数据结构的实现方法;3. 掌握数据结构在实际问题中的应用。
实验内容:本次实验主要包括以下几个部分:1. 线性表的实现方法,包括顺序表和链表,分别使用数组和链表来实现线性表的基本操作;2. 栈的实现方法,包括顺序栈和链式栈,分别使用数组和链表来实现栈的基本操作;3. 队列的实现方法,包括顺序队列和链式队列,分别使用数组和链表来实现队列的基本操作;4. 链表的实现方法,包括单链表、双链表和循环链表,分别使用指针链、双向链和循环链来实现链表的基本操作;5. 综合应用,使用各种数据结构来解决实际问题,例如使用栈来实现括号匹配、使用队列来实现马铃薯游戏等。
实验步骤及结果:1. 线性表的实现方法:a) 顺序表的基本操作:创建表、插入元素、删除元素、查找元素等;b) 链表的基本操作:插入节点、删除节点、查找节点等;c) 比较顺序表和链表的优缺点,分析适用场景。
结果:通过实验,确认了顺序表适用于频繁查找元素的情况,而链表适用于频繁插入和删除节点的情况。
2. 栈的实现方法:a) 顺序栈的基本操作:进栈、出栈、判空、判满等;b) 链式栈的基本操作:进栈、出栈、判空、判满等。
结果:通过实验,掌握了栈的基本操作,并了解了栈的特性和应用场景,例如括号匹配。
3. 队列的实现方法:a) 顺序队列的基本操作:入队、出队、判空、判满等;b) 链式队列的基本操作:入队、出队、判空、判满等。
结果:通过实验,掌握了队列的基本操作,并了解了队列的特性和应用场景,例如马铃薯游戏。
4. 链表的实现方法:a) 单链表的基本操作:插入节点、删除节点、查找节点等;b) 双链表的基本操作:插入节点、删除节点、查找节点等;c) 循环链表的基本操作:插入节点、删除节点、查找节点等。
结果:通过实验,掌握了链表的基本操作,并了解了链表的特性和应用场景。
数据结构实训实验报告

一、实验背景数据结构是计算机科学中一个重要的基础学科,它研究如何有效地组织和存储数据,并实现对数据的检索、插入、删除等操作。
为了更好地理解数据结构的概念和原理,我们进行了一次数据结构实训实验,通过实际操作来加深对数据结构的认识。
二、实验目的1. 掌握常见数据结构(如线性表、栈、队列、树、图等)的定义、特点及操作方法。
2. 熟练运用数据结构解决实际问题,提高算法设计能力。
3. 培养团队合作精神,提高实验报告撰写能力。
三、实验内容本次实验主要包括以下内容:1. 线性表(1)实现线性表的顺序存储和链式存储。
(2)实现线性表的插入、删除、查找等操作。
2. 栈与队列(1)实现栈的顺序存储和链式存储。
(2)实现栈的入栈、出栈、判断栈空等操作。
(3)实现队列的顺序存储和链式存储。
(4)实现队列的入队、出队、判断队空等操作。
3. 树与图(1)实现二叉树的顺序存储和链式存储。
(2)实现二叉树的遍历、查找、插入、删除等操作。
(3)实现图的邻接矩阵和邻接表存储。
(4)实现图的深度优先遍历和广度优先遍历。
4. 算法设计与应用(1)实现冒泡排序、选择排序、插入排序等基本排序算法。
(2)实现二分查找算法。
(3)设计并实现一个简单的学生成绩管理系统。
四、实验步骤1. 熟悉实验要求,明确实验目的和内容。
2. 编写代码实现实验内容,对每个数据结构进行测试。
3. 对实验结果进行分析,总结实验过程中的问题和经验。
4. 撰写实验报告,包括实验目的、内容、步骤、结果分析等。
五、实验结果与分析1. 线性表(1)顺序存储的线性表实现简单,但插入和删除操作效率较低。
(2)链式存储的线性表插入和删除操作效率较高,但存储空间占用较大。
2. 栈与队列(1)栈和队列的顺序存储和链式存储实现简单,但顺序存储空间利用率较低。
(2)栈和队列的入栈、出队、判断空等操作实现简单,但需要考虑数据结构的边界条件。
3. 树与图(1)二叉树和图的存储结构实现复杂,但能够有效地表示和处理数据。
数据结构的实训报告结果

一、实训目的本次数据结构实训旨在通过实践操作,加深对数据结构理论知识的理解,提高解决实际问题的能力。
通过实训,使学生能够熟练掌握各种基本数据结构及其操作方法,并能够将这些知识应用于解决实际问题。
二、实训环境1. 操作系统:Windows 102. 编程语言:C语言3. 开发环境:Visual Studio 20194. 实训教材:《数据结构》(C语言版)三、实训内容本次实训主要内容包括线性表、栈、队列、树、图等基本数据结构的创建、操作和应用。
1. 线性表(1)单链表的创建、插入、删除和查找操作(2)双向链表的创建、插入、删除和查找操作(3)循环链表的创建、插入、删除和查找操作2. 栈(1)栈的创建、入栈、出栈和判断栈空操作(2)应用栈实现括号匹配3. 队列(1)队列的创建、入队、出队和判断队列空操作(2)应用队列实现广度优先搜索4. 树(1)二叉树的创建、插入、删除和遍历操作(2)二叉查找树的创建、插入、删除和查找操作5. 图(1)图的创建、添加边、删除边和遍历操作(2)图的深度优先遍历和广度优先遍历四、实训过程1. 线性表首先,我们学习了单链表、双向链表和循环链表的基本概念和创建方法。
通过编写代码,实现了链表的插入、删除和查找操作。
在实训过程中,我们遇到了一些问题,如链表插入操作时指针的移动、删除操作时避免内存泄漏等。
通过查阅资料和与同学讨论,我们逐步解决了这些问题。
2. 栈接着,我们学习了栈的基本概念和操作方法。
通过编写代码,实现了栈的创建、入栈、出栈和判断栈空操作。
在实训过程中,我们遇到了栈空和栈满的情况,通过设置标志位和循环队列的方法解决了这些问题。
此外,我们还学习了应用栈实现括号匹配,加深了对栈的应用理解。
3. 队列然后,我们学习了队列的基本概念和操作方法。
通过编写代码,实现了队列的创建、入队、出队和判断队列空操作。
在实训过程中,我们遇到了队列空和队列满的情况,通过设置标志位和循环队列的方法解决了这些问题。
数据结构队列的实训报告

一、引言队列是一种先进先出(First In First Out,FIFO)的线性数据结构,它具有在队列尾部插入元素和在队列头部删除元素的特点。
在现实生活中,排队等候、生产流水线等场景都可以用队列来模拟。
队列在计算机科学中有着广泛的应用,如操作系统中的进程调度、缓存管理、广度优先搜索等。
为了更好地理解和掌握队列数据结构,我们进行了一次队列的实训。
二、实训目标1. 理解队列的基本概念和特点;2. 掌握队列的几种实现方式,如循环队列、链队列等;3. 熟悉队列的常用操作,如入队、出队、判断队列是否为空等;4. 能够运用队列解决实际问题。
三、实训内容1. 队列的基本概念队列是一种特殊的线性表,它只允许在队列尾部插入元素,在队列头部删除元素。
队列遵循先进先出的原则,即最先进入队列的元素将最先被删除。
2. 队列的实现方式(1)循环队列:使用数组实现队列,利用循环的思想,将数组的最后一个元素和第一个元素视为相邻,从而实现队列的循环利用。
(2)链队列:使用链表实现队列,每个元素是一个节点,节点包含数据和指向下一个节点的指针。
3. 队列的操作(1)入队:在队列尾部插入元素。
(2)出队:在队列头部删除元素。
(3)判断队列是否为空:判断队列中是否还有元素。
(4)获取队列长度:获取队列中元素的数量。
4. 实验项目(1)实现循环队列:使用数组实现循环队列,实现入队、出队、判断队列是否为空等操作。
(2)实现链队列:使用链表实现链队列,实现入队、出队、判断队列是否为空等操作。
(3)运用队列解决实际问题:使用队列实现一个简单的缓存管理器,模拟生产流水线中的工件处理过程。
四、实验过程及结果1. 实现循环队列(1)初始化队列:创建一个固定大小的数组,用于存储队列元素,并设置头指针和尾指针。
(2)入队操作:将元素插入到队列尾部,若队列已满,则进行扩容。
(3)出队操作:删除队列头部元素,若队列已空,则返回错误信息。
(4)判断队列是否为空:判断头指针是否等于尾指针。
数据结构实训报告书

一、实训目的本次实训旨在通过实际操作,加深对数据结构理论知识的理解,提高动手实践能力,掌握常见数据结构的实现方法,并学会运用这些数据结构解决实际问题。
二、实训环境1. 操作系统:Windows 102. 编程语言:C语言3. 开发工具:Visual Studio 2019三、实训内容1. 线性结构(1)单链表单链表是一种常用的线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。
本次实训实现了单链表的创建、插入、删除、遍历等基本操作。
(2)双向链表双向链表是一种带有两个指针的链表,每个节点包含数据和指向前一个节点的指针以及指向下一个节点的指针。
本次实训实现了双向链表的创建、插入、删除、遍历等基本操作。
2. 非线性结构(1)树树是一种层次结构,由节点组成,节点之间存在父子关系。
本次实训实现了二叉树的创建、插入、删除、遍历等基本操作。
(2)图图是一种由节点和边组成的数据结构,节点表示实体,边表示实体之间的关系。
本次实训实现了图的创建、添加边、深度优先遍历、广度优先遍历等基本操作。
四、实训过程1. 线性结构实训(1)单链表实训首先,创建一个单链表节点结构体,包含数据域和指针域。
然后,实现单链表的创建、插入、删除、遍历等操作。
(2)双向链表实训在单链表的基础上,添加指向前一个节点的指针,实现双向链表的创建、插入、删除、遍历等操作。
2. 非线性结构实训(1)树实训首先,创建一个二叉树节点结构体,包含数据域和左右子树指针。
然后,实现二叉树的创建、插入、删除、遍历等操作。
(2)图实训首先,创建一个图节点结构体,包含数据域和邻接表指针。
然后,实现图的创建、添加边、深度优先遍历、广度优先遍历等操作。
五、实训结果1. 成功实现了线性结构(单链表、双向链表)的基本操作。
2. 成功实现了非线性结构(二叉树、图)的基本操作。
3. 通过实际操作,加深了对数据结构理论知识的理解。
六、实训总结1. 通过本次实训,掌握了常见数据结构的实现方法,提高了动手实践能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章 需求分析
2.1 功能描述
系统主要有的功能:校园全景浏览、景点信息查询、最短路径查询、和校园美景评价 等功能模块,其中还有管理员权限。
功能介绍: 1、全景浏览功能能够让用户看到我校的大致轮廓图,较为清晰地看到我校的建筑物和景点; 2、景点信息查询功能是向用户介绍景点的特点,用户可以输入想要查询的景点,按回车键 即可显示你想要查询的景点; 3、最短路径的查询功能能够查询用户想要查询的每一个景点之间的最短路径; 4、校园美景评价功能可以让每一个用户都能对学校景点进行评价,用户只要输入景点的代 号即可进入评价界面,然后可以输入评价; 5、管理员权限功能普通用户也可以进入,但是要修改需要获得密码权限,管理员进入权限 需要输入密码登陆,它可以进行多个功能的操作,即及时添加或删除景点和对评价进行管理。 即管理员权限功能主要是对校方对景点和建筑物的变化进行修改,和搜集用户对特定景点的 评价,及时掌握同学们的意见和看法。
程序中用到了结构体函数,顺序链表的存储和修改,图的创建等知识点。
1.2 分组情况
本小组人员是倪远远和沈建曦,编码工作是由沈建曦为主,倪远远从旁协助。文档的编 写由倪远远为主编写。
编码的主框架由两人齐力修改,其中沈建曦负责路径长度的修改和学校地图的修改,本 人负责图描述的修改。子函数添加的构思组要参考实训要求编写。
由于学习任务和为方便大一新生们对我校的景点有所了解,我两人决定协作完成校园导 游程序。此程序是一个可以实现同学们对我校园区的多数景点的查询,方便新生们对学校各 个场所的寻找。
该校园导游系统是由校园全景浏览、景点信息查询、最短路径查询和校园美景评价几个 功能组成。其中希望实现全景浏览可以俯瞰学校大轮廓,景点信息查询用作为用户介绍景点 特色,最短路径查询功能可以告诉用户景点之间最短距离,最后一个功能是用户对景点的评 价功能。评价功能中有管理员权限,可以进行景点的修改。
第三章 概要设计
3.1 核心结构体
核心结构体是顺序链表的结构体创建、顶点节点图的创建。
下面是结构体的展示:
1、typedef struct
{
int number ;
char sight[50];
此结构体是定义游客对景点的评价,
结构体定义了游客可以评价的景点信息,
char scrible[100] ;
2.2 关键技术
关键技术是:校园地图的创建、图的创建、景点列表的创建、输出函数的创建、关于修 改链表的函数的创建。
1、校园地图的创建规划出来了校园的大致轮廓,和学校的主要建筑物的所在位置,较 为直观反映了学校建筑规模和建筑的分布情况。校园的地图是由手绘画出来的,由于线条很 是繁多,绘画起来很麻烦,花了两天的时间,但是其拥有比界面寻址更加直观的视觉效果。
第六章 总结.....................................................................................................................................16
第一章 概述
1.1 任务描述
第三章 概要设计...............................................................................................................................6 3.1 核心结构体..........................................................................................................................6 3.2 系统结构(子函数)............................................................................................................... 6
int password()
密码设置函数
SeqList * init_SeqList() 链表函数
SaveFile(SeqList *L )
文件读入
OpenFile(SeqList *L)
文件读出
Input(SeqList *L)
链表输入
Show(SeqList *L)
显示文件内容
int edit_menu()
{
int number; //景点的编号
char *name; //景点的名称
char *info; //景点的简介
} Verteபைடு நூலகம்Node; //顶点结点的定义
3.2 系统结构(子函数)
下面是程序中各个子函数:
int xiugai() 修改目录
void Map() 校园地图
void CreateGraph() 创建图
主菜单函数
OpenFile(SeqList *L) 文件读出
SaveFile(SeqList *L) 文件读入
AddNode()
添加评价目录
modify()
修改 子函数
int edit_menu() 编辑菜单
void changesight() 引入编辑菜单
图 3-1 系统流程图
景点更改函数
gai_number(SeqList *L,int i) 景点代码调数
gai_sight(SeqList *L,int i) 新景点输入函数
gai_scrible(SeqList *L,int i) 景点描述函数
gai_name(SeqList *L,int i) 景点名函数
change(SeqList *L) 修改景点号的函数
void OutputPlace() 输出景点列表
void SearchPlace() 查询景点信息
void SearchPath() 查询最短路径
void Shortpath(int i) 计算最短路径
void Output(int sight1,int sight2) 景点输出函数
void changesight()
景点编号和游客信息。
char name [50];
}view;
2、typedef struct
定义文件存储:
将各个景点的信息按照线性表的方式存入文件中,
{
当游客想要了解想要的景点信息时,
view v[50];
输入景点编号信息就可以从存储的文件里读出并显示。
int last;
}SeqList;
typedef struct VertexNode
第二章 需求分析...............................................................................................................................4 2.1 功能描述..............................................................................................................................4 2.2 关键技术..............................................................................................................................4
第五章 系统测试.............................................................................................................................13 5.1 测试策略............................................................................................................................13 5.2 测试结果............................................................................................................................13
2、图的创建是建立了学校景点的介绍和描述,被景点信息查询功能模块所调用。我们 定义了边节点和景点节点,并且计算了各个景点之间的距离,在用户输入景点查询后就可以 显示景点之间的最短路径。
3、景点列表的创建将各个主要的景点做成了一份表格的形式输出的,比较直观,同时 它还调用了景点的查询功能。景点列表也是用手绘图做出来的效果,代码量虽不大,但是视 觉效果较为直观,同时在景点查询时需要调用该景点列表。
第四章 详细设计...............................................................................................................................8 4.1 最短路径查找.......................................................................................................................8 4.2 文件存储............................................................................................................................10 4.2 景点信息查询....................................................................................................................11