注意在声明完指针之后需要初始化。
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 20
#define APPEND_SIZE 20
struct stack_t
{
int* base;
int* top;
int stacksize;
};
//压入数据
void Push(stack_t *S, int data)
{
//满了就扩充
if ((S->top - S->base) >= S->stacksize)
{
S->base = (int*)realloc(S->base, (STACK_SIZE + APPEND_SIZE) * sizeof(int));
}
*S->top = data;
S->top++ ;
}
int Pop(stack_t *S, int data)
{
if (S->base == S->top)
{
exit(1);
}
data = *--S->top;
return data;
}
int main()
{
stack_t* my_stack = new stack_t;
my_stack->base = (int*)malloc(STACK_SIZE * sizeof(int));
//my_stack->base = new int[STACK_SIZE];
if (!my_stack->base)
exit(1);
my_stack->top = my_stack->base;
my_stack->stacksize = STACK_SIZE;
Push(my_stack, 2);
Push(my_stack, 3);
delete[] my_stack;
}