为了堆栈实现
实现 堆栈 为了
2023-09-14 09:08:10 时间
为了堆栈数据结构如下面:
typedef struct { ElemType data[MaxSize]; //栈数据 int top; //栈顶指针 }SqStack;
实现下列函数:
void InitStack(SqStack* &s); //初始化栈 void DestroyStack(SqStack* &s); //销毁栈 int StackLength(SqStack* s); //求栈的长度 int StackEmpty(SqStack* s); //栈是否为空 int Push(SqStack* &s,ElemType e); //进栈 int Pop(SqStack* &s,ElemType &e); //出栈 int GetTop(SqStack* s,ElemType &e); //取栈顶元素 void DispStack(SqStack* s); //输出栈
详细实现代码:
#include<stdio.h> #include<stdlib.h> #include<iostream> #define ElemType int #define MaxSize 1000 #define GET_ARRAY_LENGTH(array) (sizeof(array)/sizeof(array[0])) using namespace std; typedef struct { ElemType data[MaxSize]; //栈数据 int top; // }SqStack; void InitStack(SqStack* &s); //初始化栈 void DestroyStack(SqStack* &s); //销毁栈 int StackLength(SqStack* s); //求栈的长度 int StackEmpty(SqStack* s); //栈是否为空 int Push(SqStack* &s,ElemType e); //进栈 int Pop(SqStack* &s,ElemType &e); //出栈 int GetTop(SqStack* s,ElemType &e); //取栈顶元素 void DispStack(SqStack* s); //输出栈 void InitStack(SqStack* &s){ s=(SqStack* )malloc(sizeof(SqStack)); s->top=-1; } void DestroySqStack(SqStack* &s){ free(s); } int StackLength(SqStack* s){ return (s->top+1); } int StackEmpty(SqStack* s){ return (s->top==-1); } void DispStack(SqStack* s){ for(int i=s->top;i>-1;i--) cout<<s->data[i]<<" "; cout<<endl; } int Push(SqStack* &s,ElemType e){ if(s->top+1==MaxSize)return -1; else{ s->data[s->top+1]=e; s->top++; return 1; } } int Pop(SqStack* &s,ElemType &e){ if(s->top==-1)return -1; else{ e=s->data[s->top]; s->top--; return 1; } } int GetTop(SqStack* s,ElemType &e){ if(s->top==-1)return -1; else { e=s->data[s->top]; return 1; } } int main(){ int i=0; ElemType e; SqStack* s=NULL; ElemType a[]={3,76,4,25,7,8,2,43,212}; InitStack(s); for(int i=0;i<GET_ARRAY_LENGTH(a);i++){ Push(s,a[i]); DispStack(s); } GetTop(s,e); cout<<e<<" "<<StackLength(s)<<" "<<endl; for(int i=0;i<GET_ARRAY_LENGTH(a);i++){ Pop(s,a[i]); DispStack(s); } return 0; }
代码执行 结果例如以下:
相关文章
- winform系统自动登录实现
- 数据结构Java实现05----栈:顺序栈和链式堆栈
- Java实现 LeetCode 999 车的可用捕获量(简单搜索)
- java实现放麦子问题
- Java实现 蓝桥杯 算法训练 寻找数组中最大值
- python实现堆栈与队列的方法
- python实现堆栈与队列的方法
- fragement切换动画效果的实现
- 使用Java 8的二元函数BiFunction,采用函数式编程思维实现List元素的自定义排序功能
- 电力系统——需求响应【激励型】(Python实现)
- 基于无人机的移动边缘计算网络研究(Matlab代码实现)
- 222:vue+openlayers 实现云雾缭绕,白鸽飞翔的效果
- 【Tensorflow+keras】Keras API三种搭建神经网络的方式及以mnist举例实现
- Flask 实现简单的图片上传工具
- JetpackCompose实现沉浸式导航条
- 基于语音信号识别性别(Matlab代码实现)