第五周 项目1 -建立顺序栈算法库
来源:互联网 发布:windows启用网络发现 编辑:程序博客网 时间:2024/05/17 01:18
<span style="font-family:Arial;BACKGROUND-COLOR: #ffffff">问题及代码:</span>
/*copyright (t) 2016,烟台大学计算机学院*All rights reserved.*文件名称:cc.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---建立顺序栈算法库
- 快速自动更新Android Studio版本
- iOS——百度地图点击标注事件
- 第五周--建立顺序栈算法库
- 5、RIOT操作系统编译cc2538后的文件下载
- 淘宝开源项目TbSchedule的部署和使用
- 第五周 项目1 -建立顺序栈算法库
- Android 各层中日志打印功能的应用
- iOS开发常见错误
- Matlab预分配内存
- 配置Reporting Service 2012
- 欢迎使用CSDN-markdown编辑器
- 虚拟现实与增强现实
- 在Github和Git上fork之简单指南
- Leetcode 161. One Edit Distance