实验一 一个顺序栈的基本运算实验_第1页
实验一 一个顺序栈的基本运算实验_第2页
实验一 一个顺序栈的基本运算实验_第3页
实验一 一个顺序栈的基本运算实验_第4页
实验一 一个顺序栈的基本运算实验_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论