数据结构——栈(顺序栈)
来源:互联网 发布:淘宝天猫投诉电话人工 编辑:程序博客网 时间:2024/05/16 23:53
问题及代码
编写一个程序,实现顺序栈(假设栈中元素类型为char)的各种基本运算,并在此基础上完成以下功能
(1)初始化栈s;
(2)判断栈s是否非空;
(3)依次进栈元素a,b,c,d,e;
(4)判断栈s是否非空;
(5)输出栈长度;
(6)输出从栈顶到栈底元素;
(7)输出出栈序列;
(8)判断栈s是否非空;
(9)释放栈;
代码
#include <iostream>#include <malloc.h>#include <stdio.h>using namespace std;#define MaxSize 100typedef char ElemType;typedef struct{ ElemType data[MaxSize]; int top;} SqStack;//初始化栈void InitStack(SqStack *&s){ s=(SqStack*)malloc(sizeof(SqStack)); s->top=-1;}//判断栈是否为空bool StackEmpty(SqStack *&s){ return(s->top==-1);}//进栈bool Push(SqStack *&s,ElemType e){ if(s->top==MaxSize-1) return false; s->top++; s->data[s->top]=e; return true;}//计算栈长度int StackLength(SqStack *&s){ int i=0; int n=s->top; while(n!=-1) { i++; n--; } return i;}//输出从栈顶到栈底元素void Print(SqStack *&s){ int n=s->top; while(n!=-1) { printf("%c ",s->data[n]); n--; } printf("\n");}//出栈void Pop(SqStack *&s){ while(s->top!=-1) { printf("%c ",s->data[s->top]); s->top--; } printf("\n");}int main(){ SqStack *s; printf("(1)初始化栈\n"); InitStack(s); if(StackEmpty(s)) printf("(2)栈为空\n"); else printf("(2)栈为非空\n"); printf("(3)依次进栈元素a,b,c,d,e\n"); Push(s,'a'); Push(s,'b'); Push(s,'c'); Push(s,'d'); Push(s,'e'); if(StackEmpty(s)) printf("(4)栈为空\n"); else printf("(4)栈为非空\n"); printf("(5)栈的长度为:%d\n", StackLength(s)); printf("(6)输出从栈顶到栈底元素:"); Print(s); printf("(7)输出出栈序列:"); Pop(s); if(StackEmpty(s)) printf("(8)栈为空\n"); else printf("(8)栈为非空\n"); printf("(9)释放栈"); free(s); return 0;}运算结果
阅读全文
0 0
- 数据结构——栈(顺序栈)
- 数据结构——顺序栈(c++)
- 数据结构——顺序栈
- 数据结构——顺序栈
- 数据结构——顺序栈
- 数据结构——顺序栈
- 数据结构——顺序栈,双向顺序栈,链栈
- 数据结构——栈之顺序栈
- 数据结构实验三——顺序栈
- 数据结构与算法——顺序栈
- 数据结构——顺序栈的学习
- 数据结构——栈的顺序存储
- 数据结构——栈之顺序存储
- 数据结构小结——顺序栈
- 数据结构—栈的顺序的实现
- 数据结构之共享栈(顺序存储)—改编《大话数据结构》
- 数据结构(严蔚敏)顺序栈
- 数据结构4(顺序栈)
- struts2 控制器
- Oracle-SQL ALTER语句写法
- Caffe2
- Android ImageLoader框架下图片缓存的预处理情境
- 【Leetcode】【Python】【C++】1. Two Sum实现
- 数据结构——栈(顺序栈)
- js开发:原生js实现图片延迟加载
- 文件打开和保存对话框
- Transfrom动画
- 为什么要使用Kotlin呢
- Kotlin
- MySQL高可用架构之MHA
- Java 的8种基本类型和3种引用类型
- 拉格朗日乘子法和KKT条件