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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

栈子系统王志.docx

1、栈子系统王志课程设计任务书学 院信息科学与工程学院专 业电子信息科学与技术学 生 姓 名王志学 号0803070134设 计 题 目课程设计题二:栈子系统一设计内容和要求: 1.设计一个选择式菜单。栈子系统* 1 入栈 * 2 出栈 * 3 显示 * 4 数制转换 * 0 返回 *请选择菜单号(04)2.设计一个字符型的栈。3.编写入栈、出栈和显示栈中全部元素的程序。4.编写一个把十进制数转换成八进制数的应用程序。二.进度安排:第1天: 1、指导教师布置课程设计题目及任务 2、查找相关资料 第24天: 1、根据具体设计题目进行具体分析 2、对设计题目进行编码和调试3、指导教师进行验收第5天:

2、1、指导教师针对课程设计进行答辩2、完成课程设计报告指导教师(签字): 年 月 日学院院长(签字):年 月 日目 录一、 课程设计内容和要求-1二、 课程设计的目的-3三、 课程设计分析 -3-4四、 算法描述 -4-5五、 源代码 -5-9六、 运行结果分析 -10-12七、 结束语 -12八、 参考文献 -12题目栈子系统一、 课程设计的目的本学期我们对数据结构这门课程进行了学习。这门课程是一门实践性非常强的课程,为了让大家更好地理解与运用所学知识,提高动手能力,我们进行了此次课程设计实习。这次课程设计不但要求实习者掌握数据结构中的各方面知识,还要求实习者具备一定的C语言基础和编程能力。1

3、.掌握栈的特点及其描述方法2.掌握链式存储结构实现一个栈3.掌握链栈的各种基本操作4.掌握栈的典型应用的算法二、 课程设计的内容和要求1.设计一个选择式菜单。栈子系统* 1 入栈 * 2 出栈 * 3 显示 * 4 数制转换 * 0 返回 *请选择菜单号(04):2.设计一个字符型的栈。3.编写入栈、出栈和显示栈中全部元素的程序。4.编写一个把十进制数转换成八进制数的应用程序。三、 课程设计分析从逻辑结构、物理结构和基本运算入手展开说明本题目所涉及到的相关知识。1.栈是限定在栈顶一端进行插入和删除的线性表。2.栈是一种限制存取点的线性结构,最后入栈的先出栈,称为“后进先出”表。3.进制转换的8

4、进制是按低位到高位的顺序产生的,而通常输出是按高位到低位输出的,恰好与计算相反,因此转换过程中每得到一位8进制的数则进栈保存,转换完毕后出栈则正好是转换结果。四、 算法描述1、栈初始化,构造一个空栈:SeqStack *Snull ();,然后对栈依次进行入栈int Push (SeqStack *s,datatype x),出栈操作int Pop (SeqStack *s,datatype *x); 以及数制转换操作void Conversion (int m);。2、栈的初始化操作分配量进行第一次分配base为栈底指针,若base=NULL,表明栈结构不存在;称top为栈顶指针,其初值指向

5、栈底即top=base可以作为栈空的标记,每当插入一个元素时,指针top增加1。具体算法描述如下:int Push (SeqStack *s,datatype x) if(s-top=MAXLEN-1) return 0; /栈满 else s-top+; s-datas-top=x; return 1; /指针后移,将新的元素插入到栈顶int Pop (SeqStack *s,datatype *x) if (0) return 0; else *x=s-datas-top; s-top-; /退栈 return 1;3、栈是一个先进后出的线性表,在数制转换为八进制时,先把低位到高位的数字按

6、照顺序进栈,输出的时候高位到低位输出。算法课描述如下:void Conversion (int n) SeqStack*s=Snull(); int x; while(n) x=n%8; n=n/8; s-top+; s-datas-top=x; while(s-top-1) printf(t%d,s-datas-top); s-top-; getchar();printf(n);五、 源代码 /栈子系统/创建人:王志/创建时间:2009/12/28#include #include #define MAXLEN 10typedef int datatype;typedef struct da

7、tatype dataMAXLEN; int top; SeqStack;SeqStack *Snull ();int Push (SeqStack *s,datatype x); /执行入栈操作 int Pop (SeqStack *s,datatype *x); /执行出栈操作datatype ReadTop (SeqStack *s);void ShowStack (SeqStack *s);void Conversion (int m);void main() SeqStack *s; int i=1,j,chioce,val,flag,m; char a; s=Snull (); w

8、hile(i) printf(n); printf(ntt 顺序栈操作应用演示 ); printf(ntt*); printf(ntt| 1-进栈 |); printf(ntt| 2-出栈 |); printf(ntt| 3-显示栈元素 |); printf(ntt| 4-数制转换 |); printf(ntt| 0-返回 |); printf(ntt*); printf(ntt 请选择序号 (0-8): ); chioce=getchar(); getchar(); switch(chioce) case 1: j=1; while(j) printf(ntt输入整数(0结束)按回车 :);

9、 scanf(%d,&val); if (val!=0) flag=Push(s,val); if (flag=0) j=0; printf (栈满); else j=0; ;break; case 2: if (s-top!=-1) Pop (s,&val); printf (ntt出栈元素为 :%6dn,val); else if (s-top=-1) printf ( 栈已为空!); break; case 3: ShowStack (s);break; case 4: printf (ntt输入十进制数m转换的八进制数后为:); scanf (%d,&m); Conversion (m

10、);break; case 0:i=0; if(chioce=1|chioce=2|chioce=3|chioce=4) printf(ntt回车返回主菜单,输入0按回车退出程序.n); a=getchar(); if(a!=xA) i=0; else i=1; SeqStack *Snull () SeqStack *s; s=(SeqStack *)malloc(sizeof(SeqStack); s-top=-1; /top=-1表示栈空 return s;int Push (SeqStack *s,datatype x) if(s-top=MAXLEN-1) return 0; /栈满

11、 else s-top+; s-datas-top=x; return 1; /指针后移,将新的元素插入到栈顶int Pop (SeqStack *s,datatype *x) if (0) return 0; else *x=s-datas-top; s-top-; /退栈 return 1;datatype ReadTop (SeqStack *s) if(s-top=-1) return 0; else printf( 栈顶元素为:%3d ,s-datas-top); return 1;void ShowStack (SeqStack *s) int i;if(s-top=-1) pri

12、ntf( 栈已为空!); else printf( 栈元素:); for(i=s-top;i=0;i-) printf(%3d ,s-datai); void Conversion (int n) SeqStack*s=Snull(); int x; while(n) x=n%8; n=n/8; s-top+; s-datas-top=x; while(s-top-1) printf(t%d,s-datas-top); s-top-; getchar();printf(n);六运行结果:七、 实验结论有关栈的存储问题,实验开始时无法为栈进行存储,为什么?栈的初始化操作分配量进行第一次分配base为栈底指针,若base=NULL,表明栈结构不存在;称top为栈顶指针,其初值指向栈底即top=base可以作为栈空的标记,每当插入一个元素时,指针top增加1。通过本次试验,我们了解了栈的建立,存储,输出以及数制转换的问题,对栈的结构更加清楚,明确。八、 参考文献1 杨路明 C语言程序设计教程 北京邮电大学出版社2 严蔚敏 吴伟民 数据结构 清华大学出版社3 陈媛 何波 蒋鹏 刘洁 数据结构 学习指导-实验指导-课程设计 机械工业出版社

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

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