




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一 一个顺序栈的基本运算实验一、实验目的: 对一个顺序栈的基本运算进行分析与设计,回顾数据结构所学过的知识,掌握一个顺序栈的基本运算实现,为下一步的实验奠定基础。二、实验要求: 要求对一个顺序栈的基本运算作设计性实验,并上机运行,撰写实验报告。三、实验内容:一个顺序栈的数据类型表示和初始化、进栈、出栈基本运算。4、 实验环境:windows xp + vc+6.0开发环境。5、 实验步骤:1、 对顺序栈的知识进行复习,弄清楚栈的算法思想。2、 熟悉顺序栈的几种基本运算,即:(1)初始化栈int initstack(sqstack *s)/*创建一个空栈由指针s指出*/ if (s=(sqs
2、tack*)malloc(sizeof(sqstack)= =null) return false; s-top= -1;return true;(2)入栈操作int push(sqstack *s, elemtype x)/*将元素x插入到栈s中,作为s的新栈顶*/ if(s-top=maxnum-1) return false; /*栈满*/ s-top+; s-stacks-top=x;return true;(3)出栈操作elemtype pop(sqstack *s)/*若栈s不为空,则删除栈顶元素*/elemtype x;if(s-topstacks-top; s-top-;ret
3、urn x;(4)取栈顶元素操作elemtype gettop(sqstack *s)/*若栈s不为空,则返回栈顶元素*/ if(s-topstacks-top); 取栈顶元素与出栈不同之处在于出栈操作改变栈顶指针top的位置,而取栈顶元素操作不改变栈的栈顶指针.(5)判栈空操作int empty(sqstack *s)/*栈s为空时,返回为true;非空时,返回为false*/ if(s-toptop= -1;3、 上机调试。源代码如下:#include#include#define maxnum 30#define elemtype int/*定义顺序栈的存储结构*/typedef str
4、uctelemtype stackmaxnum;int top;sqstack;/*初始化顺序栈*/void initstack(sqstack *p)if(!p) printf(error);p-top=-1;/*入栈*/void push(sqstack *p,elemtype x)if(p-topstack+p-top=x;else printf(overflow!n);/*出栈*/elemtype pop(sqstack *p)elemtype x;if(p-top!=0)x=p-stackp-top;printf(栈顶元素%d已经被删除!n,p-stackp-top);p-top-;
5、return (x);elseprintf(underflow!n);return(0);/*获取栈顶元素*/elemtype gettop(sqstack *p) if(p-top!=0) return (p-stackp-top); else printf(underflow!n); return(0); /*遍历顺序栈*/void outstack(sqstack *p) int i; printf(n); if(p-toptop; i=0; i-) printf(第%d个数据是:%6dn, i, p-stacki);/*置空顺序栈*/void setempty(sqstack *p)
6、p-top=-1; /*主函数*/main() sqstack *q; int y, cord; elemtype a; do printf(n第一次使用必须初始化!n); printf(n); printf(n * 主菜单* n); printf(n * 1 初始化顺序栈 * n); printf(n * 2 插入一个元素 * n); printf(n * 3 删除栈顶元素 * n); printf(n * 4 取栈顶元素 * n); printf(n * 5 置空顺序栈 * n); printf(n * 6 结束程序运行 * n); printf(n-n); printf(请输入您的选择(
7、 1, 2, 3, 4, 5, 6): ); scanf(%d, &cord); printf(n); switch(cord) case 1: q=(sqstack*)malloc(sizeof(sqstack); initstack(q); outstack(q); break; case 2: printf(请输入要插入的数据元素:a=); scanf(%d,&a); push(q, a); outstack(q); break; case 3: pop(q); outstack(q); break; case 4: y=gettop(q); printf(n栈顶元素为:%dn, y); outstack(q); break; case 5: setempty(q); printf(n 顺序栈被置空!n); outstack(q); break; case 6: exit(0); while (cord=6);6、 实验测试结果及分析:当第一场运行时需要初始化,即输入1,进行初始化之后我们就可正常对顺序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届武汉市新洲区三年级数学第一学期期末综合测试模拟试题含解析
- 儿童手绘服装设计基础
- 2025年备考市政工程考试的注意事项与试题及答案
- 古代乐器美术课件
- 眼镜专业知识培训课件
- 2025年工程项目管理案例分析与解答试题及答案
- 项目管理的信息交流试题及答案
- 水利水电工程非技术风险试题及答案
- 小学生反诈宣传教育
- 综合性水利水电工程试题与答案介绍
- 贵州国企招聘2025贵州省水利投资(集团)有限责任公司招聘84人笔试参考题库附带答案详解
- 【8生 会考】2022-2024年安徽省初中(八年级)中考初二会考生物试卷(3年真题)
- 2025年网络与信息安全专业考试试卷及答案
- 《俗世奇人》阅读考级试题含答案
- 本科毕业生实习总结模版
- 2025年高考英语复习难题速递之说明文阅读理解(2025年4月)
- 理解市场营销英语术语试题及答案
- 购买废旧电缆合同协议
- 2024年河北承德辰飞供电服务有限公司招聘真题
- 焊接工程师理论基础考核试题及答案
- 电气设备知识培训课件
评论
0/150
提交评论