1.首先,创建stack.h头文件,头文件中只用来声明函数及定义
/*一个堆栈模块的接口*/
#define STACK_TYPE int
/*push把一个新值压入堆栈,它的参数是需要压入的值*/
void push(STACK_TYPE value);
/*pop从堆栈中弹出一个值,并丢弃*/
void pop(void);
/*top返回堆栈顶元素,但不对堆栈进行修改*/
STACK_TYPE top(void);
/*is_empty如果堆栈为空返回TRUE否则返回FALSE*/
int is_empty(void);
/*is_full如果堆栈满返回TRUE否则返回FALSE*/
int is_full(void);
/*create_stack创建堆栈*/
void create_stack(size_t size);//size_t型变量用来选择足够大的无符号整形来代表该平台上最大可能出现的对象大小
/*destroy_stack销毁堆栈*/
void destroy_stack(void);
2.其次,创建函数.c文件
#include "stack.h"
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <assert.h>
static STACK_TYPE *stack;
static size_t stack_size;
static int top_element = -1;
//create_stack
void create_stack(size_t size)
{
assert(stack_size == 0);
stack_size = size;
stack = (STACK_TYPE *)malloc(stack_size*sizeof(STACK_TYPE));
assert(stack!=N