栈的基本操作_第1页
栈的基本操作_第2页
栈的基本操作_第3页
栈的基本操作_第4页
栈的基本操作_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

数据结构(Date Structure)上机报告 学 号 201427187 姓 名 杨荣庆 班 级 信息143 时 间 2015.11.28 (1) 上机目的1. 掌握栈的插入、删除、栈的初始化及取栈顶元素等基本操作。2. 理解栈的特点,掌握栈的定义和基本操作。3. 掌握栈的顺序存储结构。(二)实验要求1. 源代码(包括主要结构、主要语句、函数注释说明)。2. 运行结果(包括程序如何使用,输入数据和输出结果)。3. 实验体会和问题分析。(3) 基本知识和原理按设定的初始量进行第一次存储分配,base可称为栈底指针,在顺序栈中,它始终指向栈底的位置,若base的值为NULL,则表明栈结构不存在。称top为栈顶指针,其初值指向栈底,即top=base可作为栈空的标记,每当插入新的栈顶元素时,指针top增1;删除栈顶元素时,指针top减1,因此,非空栈中的栈顶指针始终在栈顶元素的下一个位置上。 A出栈(top-1)ABABAAtoptoptoptopbase A入栈 base B入栈 base B出栈(top-1) base 入栈过程 出栈过程(3) 程序算法分析及实现#includeusing namespace std;# define STACK_INIT_SIZE 100# define STACKINCREMENT 10typedef struct int * base; int * top; int stacksize;/当前栈可使用的最大容量 SqStack;void InitStack(SqStack &S)/构造一个空栈S.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int);if(!S.base) cout存储分配失败!endlendl;elseS.top=S.base;S.stacksize=STACK_INIT_SIZE;cout构造成功!=S.stacksize)S.base=(int *)realloc(S.base,(S.stacksize+STACKINCREMENT)*sizeof(int);if(!S.base) cout存储分配失败!endlendl;elseS.stacksize+=STACKINCREMENT;S.top=S.base+S.stacksize;*S.top+=e;void DisplayStack(SqStack &S) /从栈底到栈顶逐次显示栈中的元素int *p;p=S.base;if(S.base=S.top)cout当前栈为空栈!endlendl;elsecout当前栈内元素为: ;while(p!=S.top)cout*(p) ; p+;coutendl;void pop(SqStack &S,int &e) /出栈 if (S.top=S.base) cout操作失败!endlendl;else e=*-S.top;DisplayStack(S);void ClearStack(SqStack &S)/清空int b;while(S.top!=S.base) b=*-S.top;if(S.top=S.base) cout顺序栈已清空!endlendl;void StackEmpty(SqStack S)/判空if(S.top=S.base) cout顺序栈为空!endlendl;else cout顺序栈不为空!endlendl;void DestroyStack(SqStack &S)S.base=NULL;cout顺序栈已销毁!endlendl;void GetTop(SqStack S,int &e)/返回栈顶元素if(S.top=S.base) cout操作失败!endlendl;elsecout栈顶元素为: ;e=*(S.top-1);couteendlendl;int main() cout 201427187 杨荣庆 信息143 endl;cout*1、构造一个空栈* endl;cout*2、输入栈的元素* endl;cout*3、输出栈的元素* endl;cout*4、求栈顶元素 * endl;cout*5、删除栈顶元素* endl;cout*6、清空存在的栈* endl; cout*7、判断栈是否为空* endl;cout*0、销毁栈 * endl;int n,k;SqStack S;for(n=0;n15;n+)coutk;if(k=0) DestroyStack(S);n=15;if(k=1) InitStack(S);if(k=2) int a;couta;Push(S,a);DisplayStack(S);if(k=3) DisplayStack(S);if(k=4) int c;GetTop(S,c);if(k=5) int b;pop(S,b);if(k=6) ClearStack(S);if(k=7) StackEmpty(S);return 0;(4) 结果分析及测试相关记录 运行页面构建空栈及插入元素求栈顶元素删除栈顶元素清空顺序栈销毁栈(五)实验体会和学习感悟 在程序的编写过程中,有许许多多的错误,导致程序不能正常运行,在进行对书的翻看和网上搜索后终于解决了问题。对栈的基本定义和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论