ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:81.77KB ,
资源ID:9718433      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9718433.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(栈及其操作.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

栈及其操作.docx

1、栈及其操作高级语言程序设计课程设计报告题目:栈及其操作专业:班级:姓名:指导教师:成绩:计算机与信息工程系2014年 6 月20 日1 设计内容及要求本次课程设计的主要目的是利用C程序设计语言实现栈类的基本操作,使得整个程序可以完成出栈、进栈、获取栈顶元素、清空栈等一系列基本操作,也可以通过此次实训巩固C语言程序设计中的很多知识点,要求学生仔细分析设计题目,并画出程序流程图,编写程序源代码。学会积极上机调试源程序,增强编程技巧与调程能力。认真书写课程设计预习报告,课程设计说明书。对于栈而言,它是程序设计语言中的有力工具。然而,栈又分为顺序栈和链栈。此次课程设计着重于顺序栈的基本操作。顺序栈,即

2、栈的顺序存储结构是利用一组地址连续的存储单元依次存放自栈低到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈的位置。通过对顺序栈的实现进而对栈进行栈的基本操作。 构造一个顺序栈,对其进行入栈、出栈、取栈顶元素、清空和销毁栈等基本操作。并且输出运行结果。进栈出栈就像只有一个口的长筒,先把数据一个个放入筒内,而拿出的时候只有先拿走上边的,才能拿走下边的。我们通常做到:进栈后不再出栈。2 概要设计将理论教学中涉及到的知识点贯穿起来,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。栈结构所具有的“后进先出”特性,使得栈成为程序设计语言中的有力工具。栈还有一个非常重要的应用就是在程序设计

3、语言中用来实现递归,当递归函数调用时,应按照“后调用先返回”的原则处理调用过程,因此函数之间的信息传递和控制转移必须通过栈来实现,递归工作栈是实现递归的核心技术。先为栈分配一个基本容量,并给存储空间分配增量当栈的空间不够使用时再逐段扩大。其中stacksize指示的是栈的当前可使用的最大容量。而false和true分别指的是栈是否为空,false为1反之亦然;error和ok则是指栈中元素是否可以返回即栈底元素是否为零,error为1反之亦然。分别对从一到十二等十二个元素进行压栈然后弹栈,每当插入新的栈顶元素时,指针top增1;删除栈顶元素时即弹栈时指针top减1,因此非空栈中的栈顶指针始终在

4、栈顶元素的下一个位置上。最后进行销毁栈的操作,并手动构造一个栈,输入想构造的栈里所包含的元素个数然后进行相应的栈的操作得到运行结果。在程序的开头,将会设置一些宏定义来方便程序代码的运行,也会在适当地方加注备注方便理解,争取做到最好。3 设计过程3.1流程图 3.2程序代码#define ERROR 0#define OVERFLOW -2 #define Stack_init_size 100#define Stackincrement 10#include #include typedef int SElemType; typedef struct SElemType *base; SEle

5、mType *top; int stacksize; SqStack; void main() SElemType e; SqStack S; void InitStack(SqStack*S); /* 构造栈的声明 */ int GetTop(SqStack*S,SElemType e); /* 取栈顶元素函数声明 */ void Push(SqStack*S,SElemType e); /* 进栈函数声明 */ int Pop(SqStack*S,SElemType e); /* 弹出栈顶元素函数声明 */ printf(构造一个栈并读入数据:n); InitStack(&S); /* 构

6、造栈 */ GetTop(&S,e); /* 取栈顶元素 */Push(&S,e); /* 进栈 */ Pop(&S,e); /* 弹出栈顶元素 */ printf(n); GetTop(&S,e); /* 取栈顶元素 */ void InitStack(SqStack*S) /* 构造栈 */int i,n;SElemType e; S-base=(SElemType*)malloc(Stack_init_size*sizeof(SElemType ); if(!(*S).base)S-top=S-base; S-stacksize=Stack_init_size; printf(请输入要读

7、入栈内的数据个数:) scanf(%d,&n);if(n=S-stacksize)S-base=(SElemType*)realloc(S-base,(S-stacksize+Stackincrement)*sizeof(SElemType); for(i=0;itop)=e;S-top=S-top+1; int GetTop(SqStack*S,SElemType e) /* 取栈顶元素函数 */if(S-top=S-base) return ERROR; e=*(S-top-1);printf(取出栈顶元素:%dn,e);void Push(SqStack*S,SElemType e) /

8、* 进栈函数 */if(S-top-S-base=S-stacksize)S-base=(SElemType*)realloc(S-base,(S-stacksize+Stackincrement)*sizeof(SElemType);if(!(*S).base) S-top=S-base+S-stacksize; S-stacksize=S-stacksize+Stackincrement; printf(请输入要插入的栈顶元素:); scanf(%d,&e); *S-top=e; S-top+; int Pop(SqStack*S,SElemType e) /* 弹出栈顶元素函数 */ i

9、f(S-top=S-base) return ERROR; S-top-; e=*S-top; printf(要删除栈顶元素:%d,e); 4 设计结果与分析在此,构造了一个栈内数据元素个数为5的栈,分别输入了进栈元素。由程序运行取出栈顶元素相继输入要插入的栈顶元素,运行程序。在输入栈内的数据个数为五的情况下,依次读入数据,按回车键结束一个元素的输入,并根据提示进行相应操作。我们在读入数据后,程序会主动进行关于栈的基本操作,操作完成即退出。5 小结在本课程设计的设计过程中,我刚开始感觉到有点头痛。要通过一学期C语言的学习后将所学知识运用起来有点困难,但回过头来再去看教课书,对于这些知识点有关的

10、背景,概念和解决方案更进一步的理解,感觉也不是很难。 另外我还体会了从事C语言课程设计工作需要特别谨慎认真地态度和作风,一点都不能马虎。这次课程设计的意义对我来说却很重要,让我明白了很多。我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实际相结合起来,从理论中得出结论,才能真正的掌握,从而提高自己的实际动手能力和独立思考的能力。今后我要多加实践,把理论和实践完美结合起来,争取去达到另一个高度。 6 参考文献1谭浩强著.C程序设计(第二版).北京:清华大学出版社,19992谭浩强,张基温,唐永炎编著.C语言程序设计.北京:高等教育出版社,19923谭浩强编著.QBASIC语言教程.北京:电子工业出版社,19974谭浩强.C程序设计M.3版.北京:清华大学出版社,20055Herbert Schildt著.戴健鹏译.C语言大全(第二版).北京:电子工业出版社,19946美SCHILDTH.C语言大全M.4版.王子恢等译.北京:电子工业出版社,2001

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1