#include "stdio.h"
#include "stdlib.h"
#include "stdbool.h"
#define MAXSIZE 50
typedef int DataType;
typedef struct {
DataType data[MAXSIZE];
int top; // 栈顶指针
}SqStack;
bool StackEmpty(SqStack* pStack);
bool pushStack(SqStack *stack, int value);
DataType popStack(SqStack *stack);
DataType getTop(SqStack *stack);
void destroyStack(SqStack *stack);
int main() {
SqStack sqStack = {{0}, -1};
SqStack *pStack = &sqStack;
printf("栈是否为空:%d\n", StackEmpty(pStack));
printf("8、6、5、4进栈\n");
pushStack(pStack, 8);
pushStack(pStack, 6);
pushStack(pStack, 5);
pushStack(pStack, 4);
printf("栈是否为空:%d\n", StackEmpty(pStack));
printf("出栈:%d\n", popStack(pStack));
printf("出栈:%d\n", popStack(pStack));
printf("栈顶元素:%d\n", getTop(pStack));
destroyStack(pStack);
printf("销毁栈\n");
return 0;
}
/**
* 销毁栈
* @param stack
*/
void destroyStack(SqStack *stack) {
free(stack);
}
/**
* 获取栈顶元素
* @param stack
* @return
*/
DataType getTop(SqStack *stack) {
if (stack->top == -1) {
return -1;
}
return stack->data[stack->top];
}
/**
* 弹出栈顶元素
* @param stack
* @return
*/
DataType popStack(SqStack *stack) {
if (stack->top == -1) {
return -1;
}
// 栈顶指针下移
return stack->data[stack->top--];
}
/**
* 入栈
* @param stack
* @param value
* @return
*/
bool pushStack(SqStack *stack, int value) {
if (stack->top == MAXSIZE - 1) {
return false;
}
// 栈顶指针后移,进栈
stack->data[++stack->top] = value;
}
/**
* 判断栈是否为空
* @param pStack
* @return
*/
bool StackEmpty(SqStack* pStack) {
return pStack->top == -1 ? true : false;
}
数据结构------顺序栈(C/C++)
最新推荐文章于 2024-07-25 23:22:43 发布