头文件及函数声明:
#include<stdio.h>
#include<windows.h>
#include<malloc.h>
#include<assert.h>
typedef int DataType;
typedef struct Stack
{
DataType* _array;
size_t _top; //栈顶
size_t _end;
}Stack;
// 栈的实现接口
void StackInit(Stack* s);
void StackPush(Stack* s, DataType x);
void StackPop(Stack* s);
DataType StackTop(Stack* s);
size_t StackSize(Stack* s);
int StackEmpty(Stack* s);
函数实现:
void StackInit(Stack* s)
{
s->_array = (DataType*)malloc(10 * sizeof(DataType));
if (s->_array)
{
s->_end = 0;
s->_top = 0;
}
}
void StackPush(Stack* s, DataType x)
{
assert(s);
s->_array[s->_top] = x;
s->_top++;
}
void StackPop(Stack* s)
{
s->_top--;
}
DataType StackTop(Stack* s)
{
assert(s);
return s->_array[s->_top-1];
}
size_t StackSize(Stack* s)
{
assert(s);
return (s->_top) - (s->_end);
}
int StackEmpty(Stack* s)
{
s->_top = 0;
return 0;
}
void Stackprint(Stack*s)
{
assert(s);
int i = 0;
size_t size = s->_top - s->_end;
if (size == 0)
{
printf("栈为空");
}
for (i = 0; i < (int)size; i++)
{
printf("%d ", s->_array[i]);
}
printf("\n");
}