- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- Keep_用法.doc
- 经典六级背单词语句!必看!!!.doc
- 新概念英语1(初阶)61-70课单词加音标.doc
- 判断下面句子是否正确.doc
- 2016年4月英语专业4级考试真题答案.docx
- 荆门市2012-2013学年度高三元月调考英语.doc
- 魔王语言__数据结构试验报告.doc
- 大一练习册unit 1.doc
- A级全真试题2014.12.doc
- 简单事务的封装.doc
- 2025届高考地理总复习考点规范练30区域差异对区域发展的影响含解析.docx
- 2025届高考生物一轮复习课后检测案43细胞工程含解析新人教版.docx
- 2025届高考数学一轮复习第一部分考点通关练第八章概率与统计考点测试65随机抽样含解析新人教B版.doc
- 2024高考历史统考一轮复习模块3第14单元近现代世界的科技与文艺第42讲近代以来世界的科学发展历程课时跟踪含解析新人教版.doc
- 2024年高考生物二轮复习核心考点专项突破生物技术实践练习含解析.docx
- 2024_2025学年新教材高中地理第一章宇宙中的地球1地球的宇宙环境学案新人教版必修1.doc
- 通史版2025届高考历史一轮复习模块二世界史篇第13单元西方工业文明的确立与纵深发展_两次工业革命时期的世界第33讲两次工业革命与资本主义世界市场的形成学案含解析.doc
- 2025届高考语文二轮复习板块4写作专题3精练提分6应用文体速记巧用辩论稿教案.doc
- 2024_2025学年高中历史第一单元第一次世界大战第1课第一次世界大战的爆发2教学教案新人教版选修3.doc
- 2025届高考数学一轮复习单元双优测评卷__第五章一元函数的导数及其应用B卷含解析.docx
文档评论(0)