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

数据结构实验报告想必学计算机专业的同学都知道数据结构是一门比较重要的课程,那么,下面是小编给大家整理收集的数据结构实验报告,供大家阅读参考。
数据结构实验报告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. 数据结构理论学习实训期间,我们重点学习了以下数据结构:(1)线性结构:线性表、栈、队列、双端队列。
(2)非线性结构:树、二叉树、图。
(3)高级数据结构:哈希表、散列表、字典树、并查集。
2. 数据结构实现与算法分析实训中,我们运用C++、Java等编程语言实现了上述数据结构,并对关键算法进行了分析,包括:(1)线性结构:插入、删除、查找、排序等。
(2)非线性结构:遍历、查找、插入、删除、路径查找等。
(3)高级数据结构:查找、插入、删除、合并等。
3. 数据结构应用案例分析实训过程中,我们结合实际案例,分析了数据结构在计算机科学、人工智能、数据库、网络通信等领域的应用,如:(1)线性结构在操作系统进程管理中的应用。
(2)树和图在社交网络、网络拓扑结构中的应用。
(3)哈希表在数据库索引、缓存中的应用。
三、实训成果1. 提高数据结构理论水平通过本次实训,我们对数据结构的基本概念、特点、实现方法有了更加深入的了解,为今后的学习和工作打下了坚实的基础。
2. 增强编程能力在实训过程中,我们动手实现了各种数据结构,提高了编程能力,学会了如何将理论知识应用于实际编程。
3. 提升算法分析能力通过对关键算法的分析,我们学会了如何分析算法的时间复杂度和空间复杂度,为今后的算法优化提供了理论依据。
4. 培养团队协作精神在实训过程中,我们分组合作,共同完成了实训任务,培养了团队协作精神。
四、实训心得1. 理论与实践相结合在实训过程中,我们深刻体会到理论联系实际的重要性。
只有将理论知识与实际编程相结合,才能真正掌握数据结构。
数据结构实验报告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. 队列然后,我们学习了队列的基本概念和操作方法。
通过编写代码,实现了队列的创建、入队、出队和判断队列空操作。
在实训过程中,我们遇到了队列空和队列满的情况,通过设置标志位和循环队列的方法解决了这些问题。
数据结构实验报告及心得体会

数据结构实验报告及心得体会一、概述:介绍本次实验的目的、背景以及所使用的实验环境和工具。
本次实验旨在通过实际操作,深入理解和掌握数据结构的原理及应用。
实验背景源于课程学习的理论知识与实际应用相结合的需求,通过实验操作,期望能够将课堂所学的数据结构知识更好地运用到实际编程和解决现实问题中。
本次实验所使用的实验环境为先进的计算机实验室,配备了高性能的计算机硬件和丰富的软件开发工具。
为了完成实验,我使用了Java编程语言,并结合Eclipse开发环境进行编程和调试。
我还参考了相关的数据结构专业书籍和在线资源,以便更好地理解和应用数据结构知识。
在实验过程中,我严格按照实验指导书的步骤进行操作,并认真记录了实验数据和结果。
通过本次实验,我深刻体会到了数据结构的重要性,也对数据结构的实现和应用有了更深入的了解。
二、实验内容:分别介绍线性数据结构(线性表)、非线性数据结构(二叉树、图)的实验内容,包括其实现方法、操作过程等。
每个实验都包含具体的实验目的和预期结果。
三、实验过程及结果分析:详细描述实验过程,包括实验步骤的执行情况,遇到的问题及解决方法。
对实验结果进行展示,并进行数据分析和结论。
这部分是实验报告的核心部分,体现了学生的实践能力和问题解决能力。
四、心得体会:分享在实验过程中的心得体会,包括遇到的困难、收获,对数据结构的理解与认识提升,以及实验过程中的团队协作和学习体验等。
这部分内容可以体现出学生的思考深度和学习的主观感受。
五、总结与展望:对本次实验报告进行总结,并对未来数据结构与算法的学习提出展望和建议。
这部分内容可以帮助学生梳理所学知识,明确未来的学习方向。
2024年数据库实习报告范文5篇

2024年数据库实习报告范文2024年数据库实习报告范文精选5篇(一)以下是一个关于2024年数据库实习报告的范文:2024年数据库实习报告一、实习内容和目标作为2024年暑期实习的一部分,我参加了一家互联网科技公司的数据库实习。
实习期间,我主要负责数据库的管理和优化工作。
我的目标是通过实习体验,提升自己在数据库领域的理论知识和实际操作技能。
二、实习过程和收获1. 熟悉数据库系统在实习开始之前,我对数据库系统进行了较为深入的学习,包括关系数据库、SQL语言和数据库设计原则等方面的知识。
这为我后续的实习工作打下了良好的基础。
2. 数据库管理在实习过程中,我负责了公司数据库的日常管理工作。
包括数据库的备份、恢复以及性能监控等。
通过实际操作,我更加深入地了解了数据库管理的重要性,也学会了如何处理一些常见的数据库问题。
3. 数据库优化在实习期间,我也参与了数据库的优化工作。
通过分析系统运行情况和数据库性能指标,我提出了一些优化建议,如索引的创建和优化、SQL语句的优化等。
这些优化措施有效地提升了系统的性能和响应速度。
4. 项目实践除了日常的数据库管理和优化工作,我还参与了一个数据库相关的项目。
在这个项目中,我负责设计和实现数据库的结构,并编写相关的SQL语句。
通过这个实践项目,我在数据库设计和开发方面获得了更多的实际经验。
三、实习总结和反思通过这次数据库实习,我不仅提升了自己的理论知识,还学会了如何将这些知识应用到实际工作中。
同时,我也意识到数据库管理和优化工作的重要性,以及在项目中正确使用数据库的必要性。
在未来的学习和工作中,我将继续加强对数据库领域的学习和探索,不断提升自身的能力。
四、感谢与致谢在实习期间,我得到了公司和导师的大力支持和帮助,特此表示衷心的感谢。
感谢他们为我提供了这次宝贵的实习机会,并给予了我充分的指导和鼓励。
同时,也要感谢我的同事们,在他们的帮助下我能够更快地适应团队工作,并取得了一定的成绩。
数据结构实验报告及心得体会

数据结构实验报告及心得体会一、引言数据结构是计算机科学中的重要基础课程,通过实验环节的学习,我们能够更好地掌握和应用数据结构的概念、算法和操作。
本报告旨在总结和分享我们进行的数据结构实验,并提出相应的心得体会。
二、实验一:线性表的实现与应用1. 实验目的本实验旨在通过实现和应用线性表的基本操作,掌握线性表的存储结构和算法。
2. 实验内容我们选择了顺序表和链表两种线性表的实现方式,并实现了插入、删除和查找等基本操作。
通过实验,我们发现顺序表适用于元素个数较少、频繁查找的情况,而链表适用于插入和删除操作较多、元素个数不确定的情况。
3. 实验心得通过实验一,我们深刻认识到数据结构的不同实现方式对算法的影响。
选择合适的数据结构可以提高算法效率,提高程序的性能。
同时,我们也意识到了在实际应用中,根据问题的具体特点选择不同的数据结构才能得到最优解。
三、实验二:栈与队列的应用本实验旨在通过实现和应用栈和队列的基本操作,掌握栈和队列的特性及其在实际应用中的作用。
2. 实验内容我们分别实现了顺序栈、链式栈、顺序队列和链式队列,并实现了入栈、出栈、入队和出队等基本操作。
我们发现栈适用于实现回溯算法、递归算法等,而队列适用于广度优先搜索、线程池等场景。
3. 实验心得通过实验二,我们进一步理解了栈和队列在实际编程中的运用。
它们提供了方便的数据结构,帮助我们解决了许多实际问题。
同时,实验过程中,我们也发现了栈溢出的问题,意识到了合理管理栈空间的重要性。
四、实验三:树与二叉树的实现与应用1. 实验目的本实验旨在通过实现和应用树和二叉树的基本操作,掌握树和二叉树的存储结构和算法。
2. 实验内容我们实现了树和二叉树的基本操作,包括创建、插入、删除和遍历等。
通过实验,我们发现树在表示具有部分层次结构的问题时更合适,而二叉树在表示递归结构时更加方便。
通过实验三,我们深入理解了树和二叉树的特性及其应用。
树和二叉树是许多高级数据结构的基础,熟练掌握它们的操作对于解决实际问题非常重要。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构课程设计报告学生姓名:孔令周指导老师:陈占龙班级:116102学生学号:021实习题目一1.需求规格说明书设停车场是一个可停放n 辆汽车的狭长通道,且只有一个大门可供汽车进出。
汽车在停车场内按车辆到达时间的先后顺序,依次由北向南排列(大门在最南端,最先到达的第一辆车停放在车场的最北端),若车场内已停满n 辆汽车,则后来的汽车只能在门外的便道上等候,一旦有车开走,则排在便道上的第一辆车即可开入;当停车场内某辆车要离开时,在它之后进入的车辆必须先退出车场为它让路,待该辆车开出大门外,其他车辆再按原次序进入车场,每辆停放在车场的车在它离开停车场时必须按它停留的时间长短交纳费用。
试为停车场编制按上述要求进行管理的模拟程序。
2.总体分析与设计【设计思想】在内存中实现,无需外存的流处理过程。
主要的算法思想是栈和队列的使用。
以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理。
每一组输入数据包括三个数据项:汽车“到达”或“离去”信息,汽车牌照号以及到达或离去的时刻。
对每一组输入的数据进行操作后的输出信息为:若是车辆到达,则输出汽车在停车场内或便道上的停车位置;若是车辆离去,则输出汽车在停车场内停留的时间和应交纳的费用(在便道上停留的时间不收费)。
栈以顺序结构实现,队列以链表结构实现。
【设计表示】【详细设计表示】主函数开始时要求用户输入停车场的初始大小,然后对进入的车辆进行管理,如果是进入,调用添加函数,此函数中定义的规则是如果停车场如果没有满就加到停车场栈中,如果停车场已经满了,就添加到走道队列中。
处理完添加函数后while循环调用次过程。
同理,如果是车辆要出去,就调用删除函数,如果删除后走道上有车在等待车位就将走道上的车辆根据先进先出的规则压到栈中。
处理完删除函数之后也while循环调用次过程。
只有当用户输入结束的时候此循环才会结束。
3.编码1.输入A表示的是添加,输入D表示删除,输入E表示结束,那么要是用户不小心输入了其他的一个字母怎么办呢在while循环中最开始进行判断的并不是输入的是否为ADE而是输入的是不是不是ADE中间的任何一个,这时候令输入无效,用户需重新输入。
此时的输入作废。
2.添加的时候如果是栈没有满,这时应该添加到栈中去,储存进入时间和车号,但是如果只是停在走道上需不需要这些数据呢这里要不要抖没有关系,因为在这里如果要了的话在后面闪出部分走道上的车子重新进入的时候就重新记录一遍车子的进入时间,避免在走道上的时间也要被收费。
3.删除的时候将此时的时间减去车子这个数据对象的进入时间就是时间差,根据规定的单价计算停车费用。
但是如果走道上有车子的时候他的进入时间呢处理时一定的,一定要更新,否则车子在走道上的时间也总算在停车场的时间这是不对的。
4.如果在停车场中要出去的车是先进来的车子,则表示比他后来的车要先出去那此时的算法呢答案是也将前面的车先存在一个栈中,等向后面的车子先出去后在出栈重新压栈。
4.程序算分分析【运行结果】5.小结【改进设想】用类的思想,本题我还是沿用的过程思想,对各个过程处理好就出了结果,尽管结果没有错,但是和面向对象的思想不是太符合,所以希望可以用个停车场这一个类来处理问题。
【体会】有时候在调试的时候的很小的一个结果和预想的不符就是很大的思想问题,比如我调试的时候最后一步有时候钱算的不对,就是添加删除时的时间没有处理正确,所以,错误不在小。
要知道为什么会出这个错。
编程的时候重要的是提前把思路理好。
6.附录class Car{public:int carno; arno=i;}*/while (true){cout<<"进站还是出站:";cin>>situa;if (situa!='A' && situa!='D' && situa!='E'){cout<<"错误状态!请输入A ,D 或者E!"<<endl;cout<<"进站还是出站:";cin>>situa;}if (situa=='A'){cout<<"车牌号:";cin>>no;cout<<"进/出站时间:";cin>>tim;if (index<=2){cout<<"位置:"<<index<<endl;}else{cout<<"车道上"<<endl;}car[no].intime=tim;car[no].carno=no;index++;ntime)<<endl;cout<<"应缴费用:"<<(tim-(car[no].intime))*2<<" 元"<<endl;index--;preindex--;求规格说明书人们在日常生活中经常需要查找某个人或某个单位的电话号码,本实验将实现一个简单的个人电话号码查询系统,根据用户输入的信息(例如姓名等)进行快速查询。
2.总体分析与设计【设计思想】本题要求的是做一个通讯录,由于所需要的数据量比较大,所以考虑在外存中进行处理,这里用的是txt文件。
当然本来想用数据库的,但是水平不到家。
所以放弃了。
新建一个数据类型,包括姓名,固定电话,移动电话,电子邮箱。
为了实现对电话号码的快速查询,可以将上述结构数组排序,以便应用折半查找,但是,在数组中实现插入和删除操作的代价较高。
如果记录需频繁进行插入或删除操作,可以考虑采用二叉搜索树组织电话号码信息,则查找和维护都能获得较高的时间性能。
【设计表示】【详细设计表示】设置四个选项,0、1、2、3分别代表退出、查询、插入、删除。
根据所需要的功能做出操作。
初始数据储存在txt文本中。
如果选择退出则退出系统,如果选择插入则需填写姓名,电话,手机,邮箱信息。
根据名字按照二叉搜索树的形式组织插入,如果选择删除,根据名字的次序在搜索树中删除。
如果是查询也根据二叉搜索树的形式删除。
3.编码1.名字的判断大小,因为组织二叉搜索树的时候需要对插入和删除做优化,所以需要对名字的大小问题作出比较。
解决的时候是通过操作符重载完成的。
开始的时候不知道汉字怎么比较大小。
后来通过请教了解到汉字可以直接比较大小。
大于号的重载就是这个人的名字大于另外一个人的名字。
2二叉树的插入,我拷的是以前的代码……其实自己重写一遍话的时间还少一些,因为pp和p搞反了。
后来问了张唯老师才在讲的时候发现这个问题。
3.删除的时候在内存中的二叉搜索树中删除很容易但是文本中的内容并没有变,所以在内存中处理完了之后需要重写文本。
开始的时候是先删除所有的文本内容,在重新全部重写。
但是后来发信啊这样内存的开销特别大,而且不容易实现,后来是删除之后直接就在文本中输出。
发现重新输出的时候文本会重新更新。
. 4.程序算分分析【运行结果】5.小结【改进设想】Txt中的信息没有对齐。
如果可以的话用数据库或者excel做可能会清晰一些。
还有就是如果文本中的信息没有8条的话是会出错的。
界面不好。
用mfc会好一些……【体会】直接烤以前的代码如果有不适合的话会很麻烦,如果代码不很长的话还是抄一遍吧。
那样会思路清晰一些。
6.附录ifstream in("");ame>>Tele[i].mobilnumber>>Tele[i].phonenumber>>Tele[i].email;};for (int j=0;j<total;j++){ame==temp_name0){menber0=Tele[t];}}cout<<"您真的要删除吗"<<endl;while (yorn!='y' && yorn!='n'){cout<<"输入y或者n表示yes或者no: ";cin>>yorn;}if (yorn=='y'){int tempnum=0;int nmo=0;TelNumber here[100];while (tempnum<total){if (Tele[tempnum]!=menber0){(Tele[tempnum],delete_member);here[nmo]=delete_member;out<<setw(5)<<left<<<<setw(20)<<right<<<<right<<setw(20)<<<<setw(30)<<right<<<<endl;nmo++;}if (Tele[tempnum]==menber0){(Tele[tempnum],delete_member);}tempnum++;}求规格说明书假定文本文件中是我校所有参加南望山庄二期挑房职工的信息,请编写程序,读出文件中的内容,再按挑房的先后次序排队后将排序号和姓名以文本方式存放到文件中。
排队原则:先按职称排,同职称按分房工龄排,同工龄按年龄排。
2.总体分析与设计【设计思想】由于测试数据是在文本中的数据,所以处理起来需要用到输入输出流。
将已经给好的.中的数据在内存中处理完毕之后就重新输出到另外一个中。
【设计表示】【详细设计】建立流对象两个,第一个是输入流,一个是输出流。
将给输数据流读到内存中,调用排序函数,这里不能用选择排序,因为选择排序的话要写三个不同的找到最大值函数。
根据三个不同的因素来排。
所以选择冒泡排序。
拍完之后在输出就行了。
3.编码1.开始的时候建立流对象忘记了。
看以前的数的时候也不知道,因为以前这里也没有学通。
现在做到时候是叫同学叫我怎么做流的技巧的。
2.排序算法。
开始的时候嫌冒泡太麻烦。
要写好多。
想找个简单的但是后来发现就这个用的方便。
其他的都需要重载函数。
太麻烦。
3.调整间距,在用了一个left或right之后只能管一下,在下一个<<操作符之后的地方前面的限定就不起作用了。
需要重新声明左对齐与右对齐。
4.程序算分分析【运行结果】5.小结【体会】这次实习最大的收获就是学会了初级的输入输出流处理,程序大多数是对输入输出的处理,应付不同的数据组织形式。