数据结构上机顺序栈建立.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
上机题目 顺序栈的建立及基本操作实现,要求建立一个顺序栈,并且执行初始化、入栈、出栈、栈的清空、栈中元素计数等功能。 需求分析 本次程序设计要求建立一个顺序栈,并且执行初始化、入栈、出栈、栈的清空、栈中元素计数等功能。 输入形式为从键盘输入,用户根据界面的提示从键盘直接输入所对应的数即可。系统按照用户输入的数据类型,将会把相应的输出结果显示到界面上。 Status Push(SqStack S){ if(S.top-S.base=S.stacksize){ S.base=(SElemType*)realloc(S.base, (S.stacksize+=STACKINCREMENT)*sizeof(SElemType)); if(!S.base)exit(OVERFLOW); S.top=S.base+S.stacksize; S.stacksize+=STACKINCREMENT; } *S.top++=e; return OK; } 删除栈顶元素用e返回 Status Pop(SqStack S,SElemType e){ if(S.top==S.base) return ERROR; S.top--; e=*S.top ; return OK; }/ 检验栈是否为空 Status StackEmpty(SqStack S){ if(S.top==S.base) printf(栈为空); else printf(栈不为空); return OK; } Status GetTop(SqStack S,SElemType e){ if(S.top==S.base) return ERROR; p--; e=*p; return OK; } 栈的长度 Status StackLength(SqStack S){ if(S.base==NULL) return ERROR; else return OK; } 清空栈 Status ClearStack(SqStack S){ if(S.base=NULL) return ERROR; else S.top=S.base; return OK; } 调试分析 在调试的时候初期的时候,我们解决了一些常见的错误,一些失误引起的语法错误,但是我也看到了我的程序的很多不足之处,例如:因为程序比较长,运行时如果没有表达清楚,很难进行操作,我在编程时没有明确提示,这样用起来我们自己都觉得别扭。在老师的指导下,我在程序中添加了printf(“输入、、、”);等语句,这样看的时候就一目了然,很方便。由于时第一次进行数据结构上机实验,把算法和C语言编程结合起来有点困难,总是把C语言编程的方法用在数据结构中,于是造成程序十分复杂,并且存在很多错误,在网上找了很多关于数据结构的算法编程才明白了一些,就是用C语言的方法把算法表示出来,只要熟记一些代码,多进行一些练习就显得比较简单了。 使用说明 1 建立顺序栈:先输入顺序栈的元素个数,按ENTER键,输入第一个元素后,再按ENTER键换行输入第二个元素,同样操作进行下面。 2 选项2是测试顺序栈是否为空。 3 输入3选项是计算栈长度。 4 选项4是读出栈顶元素。 5 选项5元素出栈。 6 选项6是销毁栈。 测试结果 采用测试数据,列出实际的输入、输出结果。 输入输出如截图: 附件 //顺序栈 #include stdio.h #include stdlib.h #define STACK_INIT_SIZE 10 // 存储空间初始分配量 #define STACKINCREMENT 2 // 存储空间分配增量 #define OVERFLOW -2 #define OK 1 #define ERROR 0 typedef int Status; typedef char SElemType; // 定义栈元素类型 // 顺序栈 struct SqStack { SElemType *base; // 在栈构造之前和销毁之后,base的值为NULL SElemType *top; // 栈顶指针 int stacksize; // 当前已分配的存储空间,以元素为单位 }; Status InitStack(SqStack S){ S.base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!S.base) exit(OVERFLOW); S.top=S.base; S.stacksize

您可能关注的文档

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档