首页 顺序栈的各种基本运算

顺序栈的各种基本运算

举报
开通vip

顺序栈的各种基本运算顺序栈的各种基本运算实验内容与要求: 编写一个程序,实现顺序栈的各种基本运算,并在基础上完成以下功能: 1)初始化顺序栈; 2)判断顺序栈是否为空; 3)依次进栈元素a,b,c,d,e; 4)判断顺序栈是否为空; 5)输出栈长度; 6)输出从栈顶到栈底的元素; 7)读出栈顶元素; 8)删除栈顶元素; 9)输出从栈顶到栈底的元素; 10)判断顺序栈是否为空; 11)释放栈。 代码如下: #include #include #include #define TRUE 1 #defi...

顺序栈的各种基本运算
顺序栈的各种基本运算实验内容与要求: 编写一个程序,实现顺序栈的各种基本运算,并在基础上完成以下功能: 1)初始化顺序栈; 2)判断顺序栈是否为空; 3)依次进栈元素a,b,c,d,e; 4)判断顺序栈是否为空; 5)输出栈长度; 6)输出从栈顶到栈底的元素; 7)读出栈顶元素; 8)删除栈顶元素; 9)输出从栈顶到栈底的元素; 10)判断顺序栈是否为空; 11)释放栈。 代码如下: #include #include #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define NULL 0 #define OVERFLOW -2 typedef int Status; typedef char SElemType; Status visit(SElemType e); #define STACK_INIT_SIZE 100 // 栈存储空间的初始分配量 #define STACKINCREMENT 10 // 存储空间分配增量 typedef struct { SElemType *base; // 存储数据元素的数组 SElemType *top; // 栈顶指针 int stacksize; // 当前分配的栈空间大小,以sizeof(SElemType)为单位}SqStack; Status InitStack (SqStack &S) { // 构造一个空栈S S.base = (SElemType *)malloc(STACK_INIT_SIZE * sizeof(SElemType)); if (!S.base) exit (OVERFLOW); S.top = S.base; S.stacksize = STACK_INIT_SIZE; return OK; }// InitStack Status DestroyStack (SqStack &S) { // 销毁栈S free(S.base); S.base=NULL; S.top=NULL; S.stacksize=0; return OK; }// DestroyStack Status StackEmpty (SqStack S) { // 判断栈S是否为空 if(S.top==S.base) return TRUE; else return FALSE; }// StackEmpty Status Push (SqStack &S, SElemType e) { // 插入元素e为新的栈顶元素 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; }// Push int StackLength (SqStack S) { // 返回S的元素个数,即栈的长度 return S.top-S.base; }// StackLength Status GetTop (SqStack S, SElemType &e) { // 若栈不空,则用e返回S的栈顶元素 if(S.top==S.base) return ERROR; e = *(S.top-1); return OK; }// GetTop Status Pop (SqStack &S, SElemType &e) { // 若栈不空,则删除S的栈顶元素 if(S.top==S.base) return ERROR; e= * --S.top; return OK; }// Pop Status StackTraverse (SqStack S, Status( *visit)(SElemType)) { // 遍历栈 while(S.top!=S.base) visit(*--S.top); return OK; }// StackTraverse void main() { // 主函数 SElemType e; SqStack S; printf("(1)初始化顺序栈。\n"); InitStack(S); printf("(2)判断顺序栈是否为空:\n"); StackEmpty(S); printf("(3)依次进栈元素a,b,c,d,e:\n"); Push(S,'a'); Push(S,'b'); Push(S,'c'); Push(S,'d'); Push(S,'e'); printf("(4)判断顺序栈是否为空:\n"); StackEmpty(S); printf("(5)输出栈长度:%d\n",StackLength(S)); printf("(6)输出从栈顶到栈底的元素:\n"); StackTraverse(S,visit); printf("(7)读出栈顶元素:%d\n",GetTop(S,e)); printf("(8)删除栈顶元素:%d\n",Pop(S,e)); printf("(9)输出从栈顶到栈底的元素:\n"); StackTraverse(S,visit); printf("(10)判断顺序栈是否为空\n"); StackEmpty(S); printf("(11)释放栈。"); DestroyStack(S); }
本文档为【顺序栈的各种基本运算】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_014457
暂无简介~
格式:doc
大小:20KB
软件:Word
页数:8
分类:工学
上传时间:2019-02-19
浏览量:50