版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——用顺序结构表示栈并实现栈的各种基本操作栈的顺序表示和实现
2.2基础试验
2.2.1试验目的
(1)把握栈的顺序表示和实现(2)把握栈的链式表示和实现(3)把握队列的顺序表示和实现(4)把握队列的链式表示和实现
2.2.2试验内容
试验一:栈的顺序表示和实现
编写一个程序实现顺序栈的各种基本运算,并在此基础上设计一个主程序,完成如下功能:(1)初始化顺序栈(2)插入元素(3)删除栈顶元素(4)取栈顶元素(5)遍历顺序栈(6)置空顺序栈
栈的顺序存储结构简称为顺序栈,它是运算受限的顺序表。
对于顺序栈,入栈时,首先判断栈是否为满,栈满的条件为:p->top==MAXNUM-1,栈满时,不能入栈;否则出现空间溢出,引起错误,这种现象称为上溢。
出栈和读栈顶元素操作,先判栈是否为空,为空时不能操作,否则产生错误。寻常栈空作为一种控制转移的条件。
注意:
(1)顺序栈中元素用向量存放
(2)栈底位置是固定不变的,可设置在向量两端的任意一个端点
(3)栈顶位置是随着进栈和退栈操作而变化的,用一个整型量top(寻常称top为栈顶指针)来指示当前栈顶位置
/*定义顺序栈的存储结构*/typedefstruct{
ElemTypestack[MAXNUM];
inttop;}SqStack;
/*初始化顺序栈函数*/voidInitStack(SqStack*p)
{q=(SqStack*)malloc(sizeof(SqStack)/*申请空间*/)/*入栈函数*/
voidPush(SqStack*p,ElemTypex){if(p->toptop=p->top+1;/*栈顶+1*/p->stack[p->top]=x;}/*数据入栈*/}
/*出栈函数*/
ElemTypePop(SqStack*p)
{x=p->stack[p->top];/*将栈顶元素赋给x*/p->top=p->top-1;}/*栈顶-1*//*获取栈顶元素函数*/ElemTypeGetTop(SqStack*p){x=p->stack[p->top];}/*遍历顺序栈函数*/voidOutStack(SqStack*p){for(i=p->top;i>=0;i--)
printf(\第%d个数据元素是:m\\n\/*置空顺序栈函数*/voidsetEmpty(SqStack*p){p->top=-1;}
#include#include#defineMAXNUM20#defineElemTypeint/*定义顺序栈的存储结构*/typedefstruct
{ElemTypestack[MAXNUM];inttop;}SqStack;/*初始化顺序栈*/voidInitStack(SqStack*p){if(!p)
printf(\p->top=-1;}/*入栈*/
voidPush(SqStack*p,ElemTypex){if(p->toptop=p->top+1;p->stack[p->top]=x;}else
printf(\}/*出栈*/
ElemTypePop(SqStack*p){ElemTypex;if(p->top!=0)
{x=p->stack[p->top];
printf(\以前的栈顶数据元素%d已经被删除!\\n\p->top=p->top-1;return(x);}else
{printf(\return(0);}}
/*获取栈顶元素*/
ElemTypeGetTop(SqStack*p){ElemTypex;if(p->top!=0)
{x=p->stack[p->top];return(x);}else
{printf(\return(0);}}
/*遍历顺序栈*/
voidOutStack(SqStack*p){inti;printf(\if(p->toptop;i>=0;i--)printf(\第%d个数据元素是:m\\n\}
/*置空顺序栈*/
voidsetEmpty(SqStack*p){
p->top=-1;}
/*主函数*/main(){SqStack*q;
inty,cord;ElemTypea;do{printf(\
printf(\第一次使用必需初始化!\\n\printf(\
printf(\主菜单\\n\printf(\1初始化顺序栈\\n\printf(\2插入一个元素\\n\printf(\3删除栈顶元素\\n\printf(\4取栈顶元素\\n\printf(\5置空顺序栈\\n\printf(\6终止程序运行\\n\printf(\printf(\请输入您的选择(1,2,3,4,5,6)\scanf(\printf(\switch(cord){case1:
{q=(SqStack*)malloc(sizeof(SqStack));InitStack(q);OutStack(q);}break;case2:
{printf(\请输入要插入的数据元素:a=\scanf(\Push(q,a);OutStack(q);}break;case3:
{Pop(q);OutStack(q);}break;case4:
{y=GetTop(q);
printf(\栈顶元素为:%d\\n\OutStack(q);
}break;case5:
{
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年摄影灯泡项目申请报告模范
- 2024-2025学年新疆省克孜勒苏柯尔克孜自治州三年级数学第一学期期末统考试题含解析
- 2025年城市文化展示系统项目规划申请报告模板
- 2025年服装电子商务项目立项申请报告范文
- 2025年植物稳态营养肥料项目立项申请报告
- 小学毕业典礼讲话稿15篇
- 本科毕业自我鉴定
- 元旦邀请函范文汇编10篇
- 七年级地理上册 4.1 气温和气温的分布教学实录 晋教版
- 去工厂实习报告模板锦集6篇
- 2024年安全员B证理论考试1000题及答案
- 二手车简易买卖合同范本(2024版)
- 汉堡的制作课程设计
- 2024中国电信集团财务限公司招聘高频考题难、易错点模拟试题(共500题)附带答案详解
- 常见急性中毒的急救(急救技术课件)
- 人教PEP版小学英语六年级上册Unit1-6单元单元检测试卷(含听力材料)
- 销售合同编号规则(2024版)
- 第六单元 写作《表达要得体》公开课一等奖创新教案
- 会议室视频改造方案
- 大学美育-美育赏湖南智慧树知到期末考试答案章节答案2024年湖南高速铁路职业技术学院
- 2024-2025学年度第一学期小学一年级语文教学计划及进度表
评论
0/150
提交评论