<stack.h>
#pragma once
#define MAX_SIZE 100
typedef int DataType;
typedef struct Stack
{
DataType _array[MAX_SIZE];
int _top;//表示两个含义:(1)有效元素个数(2)栈顶下标
}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 <stdio.h>
#include <assert.h>
#include <windows.h>
#include "stack.h"
void StackInit(Stack* s)
{
assert(s);
s->_top = 0;
}
void StackPush(Stack* s, int data)
{
assert(s);
if(MAX_SIZE == s->_top)
{
printf("栈满了\n");
return 0;
}
s->_array[s->_top++] = data;
}
void StackPop(Stack* s)
{
if(StackEmpty(s))
return;
s->_top--;
}
DataType StackTop(Stack* s)
{
assert(!StackEmpty(s));
return s->_array[s->_top-1];
}
int StackSize(Stack* s)
{
assert(s);
return s->_top;
}
int StackEmpty(Stack* s)
{
assert(s);
return s->_top == 0;
}
void TestStack()
{
Stack s;
StackInit(&s);
StackPush(&s, 1);
StackPush(&s, 2);
StackPush(&s, 3);
StackPush(&s, 4);
StackPush(&s, 5);
printf("top = %d\n", StackTop(&s));
printf("size = %d\n", StackSize(&s));
StackPop(&s);
StackPop(&s);
printf("top = %d\n", StackTop(&s));
printf("size = %d\n", StackSize(&s));
}
int main()
{
TestStack();
system("pause");
return 0;
}