您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 数据结构_栈的基本操作及其应用__课程设计__实验报告
数据结构课程设计本课程设计已调试通过,请放心使用。请到:道客巴巴或豆丁网充值购买word版,省打字,直接修改即可,价格较便宜,在这里百度较贵!搜索:数据结构_栈的基本操作及其应用__课程设计__实验报告设计题目:栈的基本操作课题名称栈的基本操作及其应用院系年级专业学号姓名成绩课题设计目的与设计意义1、课题设计目的:(1)掌握栈的基本运算。如:置空栈、判断栈空、进栈、退栈、取栈顶元素。(2)栈的顺序存储结构及运算实现栈的顺序存储结构。(3)掌握栈在程序中的使用方法。(4)掌握栈的几个基本应用。如:数值转换,判断字符串的中心对称,(递归调用,表达式的求值等)。(5)理解算法的设计思想。2、课题设计意义:通过这次课程设计使我懂得了理论与实际相结合的重要性。我们不仅要牢固的掌握理论知识更要把所学到的理论与实践相结合。从实践中得出理论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。(2).在此次课程设计当中遇到了很多困难,发现自己原本的很多知识也没有掌握好,通过这自己动手操作让我学会了很多,对以前的知识也加深了印象。当然,这也让我对栈及其基本操作和应用有了更为深刻的了解。指导教师:年月日前言本课程设计涉及的主要内容是对栈进行基本操作和实现栈的一些实际应用,在课程设计中,系统开发平台为Windows2000,程序设计语言采用VisualC++,程序运行平台为Windows98/2000/XP。本学期我们学了很多关于栈的问题,栈在我们解决实际问题中起了很大的作用。本次课程设计主要介绍栈的概念和栈的基本操作和栈的两种存储结构极其应用。其中栈的基本操作主要包括置空栈、判断栈空、进栈、出栈、取栈顶元素。栈的两种存储结构是顺序存储结构和链式存储结构。栈是一种简单的数据结构,但在程序设计中却有着广泛的应用,很多程序都需要用栈来做存储结构。如:判断字符串的中心对称,数制转换,函数的递归调用,文字编辑器的设计,算术表达式求值,树或图的遍历,拓扑排序,关键路径。在此次课程设计中做了栈的其中两种应用,即数制转换和判断字符串是否中心对称。本程序主要是由C语言辅助完成,在VisualC++6.0平台实现的,我们大一的时候学过C语言的,对C语言有着一定的熟练度,有因为有VisualC++6.0这个较好的平台,因此我使用了C语言进行了对栈的操作。刘磊2012年12月18日目录第一章需求分析.......................................................................................................................11.1栈的定义及基本运算..........................................................................................................11.2栈的两种存储结构..............................................................................................................11.3栈的基本应用.....................................................................................................................1第二章实验要求...............................................................................................................................2第三章实验设计内容...............................................................................................................3第四章概要设计.......................................................................................................................4第五章详细设计.......................................................................................................................71.1置空栈..................................................................................................................................71.2判断栈空..............................................................................................................................71.3进栈......................................................................................................................................81.4出栈......................................................................................................................................81.5取栈顶元素..........................................................................................................................8第六章运行结果分析.............................................................................................................9第七章实验总结与心得体会...................................................................................................11参考文献...........................................................................................................................................11附录(源代码)...............................................................................................................................121第一章需求分析1.1栈的定义及基本运算1.定义:栈是限制仅在表尾进行插入和删除定义或删除操作的线性表。允许进行插入或删除操作的一端称为栈顶(top),另一端称为栈底(bottom),不含元素的栈成为空栈。(注意:栈的修改是是按照后进先出的原则进行的)2.栈的基本运算(栈的基本运算有五种)(1)置空栈SETNULL(S):将S置成空栈;(2)判断栈是否为空EMPTY(S):这是一个布尔函数,若S为空,则函数值为“真”,否则为“假”;(3)进栈PUSH(S,x):在S的顶部插入(亦称为压入)元素x;(4)退栈POP(S):删除(亦称弹出)栈S的顶部元素,若要在退栈的同时返回被删除的栈顶元素,则将POP(S)定义为一个类型和栈元素相同的函数;(5)取栈顶TOP(S);取栈S的顶部元素。与POP(S)不同之处是:TOP(S)不改变栈的状态。1.2栈的两种存储结构1.栈的顺序存储结构(简称为数序栈)顺序栈是利用一批地址连续顺序存储结构的存储单元依次存放自栈底到栈顶的数据元素。2.栈的链式存储结构(简称为链栈)它是运算收限制的单链表,其插入和删除操作只能在表头位置上进行。1.3栈的基本应用栈是一种简单的数据结构,但在程序设计中却有着广泛的应用,很多程序都需要用栈来做存储结构。如:判断字符串的中心对称,数制转换,函数的递归调用,算术表达式求值,树或图的遍历,拓扑排序,关键路径。在此次课程设计中做了栈的其中两种应用,即数制转换和判断字符串是否为中心对称。2第二章实验要求1.硬件设备:安装有VisualC++的PC机一台,10GB以上的硬盘,64MB以上的内存环境,WindowsXP操作系统Microsoft记事本程序。MicrosoftVisualC++编译器2.加深理解栈座位一种受限制的特殊线性表的特殊性所在。3.掌握栈的基本操作,初始化栈、判栈空、入栈、出栈等运算在两种存储结构上的实现(进行栈的基本操作时要注意栈的“后进先出”的特性)。4.利用栈解决一些实际性的问题,即栈的应用,这次课程设计介绍的是栈在数制转换和判断字符串是否为中心对称问题中的应用。3第三章实验设计内容实验设计的主要内容有:1.首先要知道什么是栈。栈是限制仅在表的一端进行插入和删除运算的线性表,通常称插入删除的这一端为栈顶(Top),另一端为栈底(Bottom)。当表中没有元素时称为空栈。2.了解栈的两种存储结构。即顺序存储和链式存储。(1)顺序栈。栈的顺序存储结构称为顺序栈,是利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指向栈顶元素在顺序栈的位置。通过顺序栈的位置。通过顺序栈的实现进而对栈进行栈的基本操作。(2)链式栈。栈的链式存储结构称为链式栈,3..学会使用栈的几种基本运算。栈的基本运算有五种,即:置空栈、判栈空、进栈、出栈、取栈顶元素。栈的这五种运算都是要在顺序表中进行的。4.函数的实现。在此次课程设计当中需要用到很多的函数。如:建空栈、判栈空、进栈、出栈、取栈顶元素等函数的定义和使用。在制转换和字符串中心对称判断过程中的使用的一些函数,主函数的使用,即主函数中调用前面的一些函数,还有在整个算法实现的过程中用到的一些循环语句和选择语句。5.程序编码完成以后要进行运行、编译和调试。6.最后写出一篇课程设计的实验报告。4第四章概要设计这次课程设计主要做的是栈的一些基本操作和栈的两个应用。分析如下:1.栈的一些基本操作。即:创建一个顺序栈,在顺序栈上实现栈的五种基本操作:置空栈、判断栈空、进栈、出栈、取栈顶元素。(1)创建顺序栈,顺序栈的类型定义如下:#includestdio.h#includestdlib.h#includeconio.h#definem10typedefstruct{inta[m];inttop;}stack;voidmain(){intisempty(stack*s);intisfull(stack*s);intgettop(stack*s,intx);intget(stack*s,intb);voidpush(stack*s,intx);voidpop(stack*s);inti,x,b,c,j=0;stack*s;s=(stack*)malloc(sizeof(stack));s-top=0;printf(please
本文标题:数据结构_栈的基本操作及其应用__课程设计__实验报告
链接地址:https://www.777doc.com/doc-5535653 .html