版权声明:转载请通知,复制请通知 如有兴趣欢迎加群:653460549 - Java资源分享 https://blog.csdn.net/qq_42038407/article/details/82730306
栈:先入后出理解为 == 吃多了 导致上吐 这个过程就是栈操作
本篇内容使用数组实现栈操作!请注意
1:函数声明:
#define _Data char
#define _MaxArray 100
typedef struct Struck{
int pre;
_Data valueArray[100];
}struck;
struck * createStruck(); //创建栈
_Data struckPop(struck * data); //出栈
int getStruckSize(struck * data); //获得栈大小
int isStruckEmpty(struck * data); //判断栈是否为空
int isStruckFull(struck * data); //判断栈是否为满
int struckPush(struck * data, _Data value);//入栈
int printAndDeleteData(struck * data); //打印栈
2:函数实现
struck * createStruck(){
struck * res = (struck *)malloc(sizeof(struck));
res->pre = 0;
}
_Data struckPop(struck * data){
if(isStruckEmpty(data)){
return 0;
}
return data->valueArray[--data->pre];
};
int getStruckSize(struck * data){
return data->pre + 1;
}
int isStruckEmpty(struck * data){
return data->pre == 0;
}
int isStruckFull(struck * data){
return data->pre == _MaxArray;
}
int struckPush(struck * data, _Data value){
if(isStruckFull(data)){
return 0;
}
data->valueArray[data->pre] = value;
data->pre++;
}
int printAndDeleteData(struck * data){
while(!isStruckEmpty(data)){
printf("%c ", struckPop(data));
}
}
3:测试函数
int main() {
struck * s = createStruck();
struckPush(s, 'A');
struckPush(s, 'B');
struckPush(s, 'c');
struckPush(s, 'd');
struckPush(s, 'E');
printf("%d\n", isStruckEmpty(s));
printf("%d\n", isStruckFull(s));
printf("%d\n", getStruckSize(s));
printAndDeleteData(s);
}