第五周项目1-建立顺序栈算法库
来源:互联网 发布:程序员地中海 编辑:程序博客网 时间:2024/04/30 02:50
问题代码:
/*copyright (t) 2016,烟台大学计算机学院*All rights reserved.*文件名称:1.cpp*作者:李玲 *完成日期:2016年9月29日*版本号:v1.0*问题描述:定义顺序栈存储结构,实现其基本运算,并完成测试。 *输入描述:无*程序输出:顺序栈基本运算的实现结果*/sqstack.h:#define Maxsize 100typedef char Elemtype;typedef struct //定义顺序栈{ Elemtype data[Maxsize]; int top; //栈顶指针} SqStack;void InitStack(SqStack *&s); //初始化栈void DestroyStack(SqStack *&s); //销毁栈bool StackEmpty(SqStack *s); //栈是否为空int StackLength(SqStack *s); //返回栈中元素个数——栈长度bool Push(SqStack *&s,Elemtype e); //入栈bool Pop(SqStack *&s,Elemtype &e); //出栈bool GetTop(SqStack *s,Elemtype &e); //取栈顶数据元素void DispStack(SqStack *s); //输出栈sqstack.cpp:#include <stdio.h>#include <malloc.h>#include "sqstack.h"void InitStack(SqStack *&s) //初始化栈{ s=(SqStack *)malloc(sizeof(SqStack)); s->top=-1;}void DestroyStack(SqStack *&s) //销毁栈{ free(s);}bool StackEmpty(SqStack *s) //栈是否为空{ return (s->top==-1);}int StackLength(SqStack *s) //返回栈中元素个数——栈长度{ return (s->top+1);}bool Push(SqStack *&s,Elemtype e) //入栈{ if(s->top==Maxsize) return false; s->top++; s->data[s->top]=e; return true;}bool Pop(SqStack *&s,Elemtype &e) //出栈{ if(s->top==-1) return false; e=s->data[s->top]; s->top--; printf("%c ",e); return true;}bool GetTop(SqStack *s,Elemtype &e) //取栈顶数据元素{ if(s->top==-1) return false; e=s->data[s->top]; return true;}void DispStack(SqStack *s) //输出栈{ int i; for(i=s->top;i>=0;i--) { printf("%c ",s->data[i]); } printf("\n");}main.cpp:#include <stdio.h>#include "sqstack.h"int main(){ SqStack *s; Elemtype e; InitStack(s); //初始化栈s if(StackEmpty(s)) //判断s栈是否为空 printf("该栈是空栈\n"); else printf("该栈不是空栈\n"); Push(s,'a'); //a元素进栈 Push(s,'b'); //b元素进栈 Push(s,'c'); //c元素进栈 Push(s,'d'); //d元素进栈 Push(s,'e'); //e元素进栈 if(StackEmpty(s)) //判断s栈是否为空 printf("该栈是空栈\n"); else printf("该栈不是空栈\n"); printf("栈长度为:%d\n",StackLength(s)); //输出栈长度 printf("从栈顶元素到栈底元素的输出序列为:\n"); DispStack(s); //输出从栈顶到栈底元素 if(StackEmpty(s)) //判断s栈是否为空 printf("该栈是空栈\n"); else printf("该栈不是空栈\n"); printf("出栈序列为:\n"); //出栈,并输出出栈序列 while (!StackEmpty(s)) //栈不为空时输出出栈元素 Pop(s,e); printf("\n"); DestroyStack(s); //销毁(释放)栈 printf("此栈已被销毁!\n"); return 0;}
运行结果:
知识点总结:
顺序栈的定义及基本运算,建立顺序栈的算法库方法。
学习心得:
了解了顺序栈的基本用法,运用了顺序栈的相关知识,巩固了栈的应用。
0 0
- 第五周项目1--建立顺序栈算法库
- 第五周 项目 1 建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周 项目1-建立顺序栈算法库
- 第五周项目1 -建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周项目1--建立顺序栈算法库
- 第五周 项目1 -建立顺序栈算法库
- 第五周 项目1-建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- 第五周 项目1 - 建立顺序栈算法库
- 第五周--项目1-建立顺序栈算法库
- 第五周项目1建立顺序栈算法库
- 第五周项目1---建立顺序栈算法库
- HTTP协议 (五) 代理
- C#界面写入数据到txt文件搜罗资料
- HTTP协议 (六) 状态码详解
- HTTP协议 (七) Cookie
- 第五周 项目1-建立顺序栈算法库
- 第五周项目1-建立顺序栈算法库
- Java动态代理的理解(知乎转发)
- Fiddler 手机抓包
- 哈士奇与阿拉斯加的区别!
- python学习小结1:for循环控制语句
- python学习小结2:if和while控制语句
- 搜索引擎选择: Elasticsearch与Solr
- 第5周 项目5-后缀式表达
- python学习小结3:函数