编译环境vs2008
Stack.h
#pragma once
#include <assert.h>
#include <stdio.h>
typedef int DataType;
#define MAX_SIZE 10
typedef struct Stack
{
DataType _array[MAX_SIZE];
int _size;
}Stack;
//栈的初始化
void StackInit(Stack* s);
//压入元素
void StackPush(Stack* s,DataType data);
//弹出元素
void StackPop(Stack* s);
//查看栈顶元素
DataType StackTop(Stack* s);
//查看栈的大小
int StackSize(Stack* s);
//判断栈是否为空
int StackEmpty(Stack* s);
Stack.c
#include "Stack.h"
//栈的初始化
void StackInit(Stack* s)
{
assert(s);
s->_size = 0;
}
//压入元素
void StackPush(Stack* s,DataType data)
{
assert(s);
if(s->_size == MAX_SIZE)
return;
s->_array[s->_size++] = data;
}
//弹出元素
void StackPop(Stack* s)
{
assert(s);
if(StackEmpty(s))
return;
s->_size--;
}
//查看栈顶元素
DataType StackTop(Stack* s)
{
assert(s);
return s->_array[s->_size-1];
}
//查看栈的大小
int StackSize(Stack* s)
{
assert(s);
return s->_size;
}
//判断栈是否为空
int StackEmpty(Stack* s)
{
assert(s);
return 0 == s->_size;
}
test.c
#include "Stack.h"
void TestStack();
int main()
{
TestStack();
return 0;
}
void TestStack()
{
Stack s;
StackInit(&s);
StackPush(&s,1);
StackPush(&s,2);
StackPush(&s,3);
StackPush(&s,4);
StackPush(&s,5);
printf("栈内一共有%d个元素\n",StackSize(&s));
printf("栈顶元素为:%d\n",StackTop(&s));
printf("%d\n",StackEmpty(&s));
StackPop(&s);
printf("栈内一共有%d个元素\n",StackSize(&s));
printf("栈顶元素为:%d\n",StackTop(&s));
printf("%d\n",StackEmpty(&s));
}