栈是一种后进先出的数据结构,下面是代码,仅供参考。
#pragma once
#include<malloc.h>
#include<assert.h>
typedef int StackDataType;
typedef struct Stack{
StackDataType* _array;
size_t size;
size_t capacity;
}Stack;
void StackInit(Stack* s, int capacity);//初始化栈
void StackPush(Stack* s, StackDataType x);//入栈
void StackPop(Stack* s);//出栈
StackDataType StackTop(Stack* s);//栈顶
size_t StackSize(Stack* s);//栈大小
int StackEmpty(Stack* s);//栈是否为空
void StackInit(Stack* s, int capacity)//初始化栈
{
s->capacity = capacity;
s->_array = (StackDataType*)malloc(sizeof(StackDataType) * s->capacity);
assert(s->_array);
s->size = 0;
}
void StackPush(Stack* s, StackDataType x)//入栈
{
assert(s->_array);
if (s->size >= s->capacity){
s->_array = (StackDataType*)realloc(s->_array, sizeof(StackDataType) * s->capacity * 2);
s->capacity = s->capacity * 2;
}
s->_array[s->size] = x;
s->si