#pragma once
typedef int SDataType;
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
typedef struct Stack {
SDataType array[100];
int top;//表示个数
} Stack;
// 初始化
void StackInit(Stack *pStack)
{
assert(pStack != NULL);
pStack->top = 0;
}
// 压栈
void StackPush(Stack *pStack, SDataType data)
{
assert(pStack);
if (pStack->top < 100)
{
pStack->array[pStack->top] = data;
pStack->top++;
}
}
// 出栈
void StackPop(Stack *pStack)
{
assert(pStack);
if (pStack->top > 0)
{
pStack->top--;
}
}
// 返回栈顶元素
SDataType StackTop(Stack *pStack)
{
assert(pStack);
if (pStack->top > 0)
{
return pStack->array[pStack->top-1];
}
}
// 判断是否为空
// 1 空
// 0 不空
int StackIsEmpty(Stack *pStack)
{
return pStack->top == 0 ? 1 : 0;
}
// 返回数据个数
int StackSize(Stack *pStack)
{
return pStack -> top;
}
void print(Stack *pStack)//打印栈
{
assert(pStack);
while (pStack->top)
{
printf("%d ", pStack->array[pStack->top - 1]);
pStack->top--;
}
printf("\n");
}
void TestStack()
{
Stack stack;
StackInit(&stack);
StackPush(&stack, 1);
StackPush(&stack, 2);
StackPush(&stack, 3);
StackPush(&stack, 4);
int x = StackTop(&stack);//栈顶元素
printf("%d\n", x);
int y = StackSize(&stack);//元素个数
printf("%d\n", y);
int z = StackIsEmpty(&stack);//判空
printf("%d\n", z);
StackPop(&stack);//出栈
print(&stack);
}
#include"stack.h"
int main()
{
TestStack();
system("pause");
return 0;
}