#pragma once
#ifndef _STACK_H_
#define _STACK_H_
#define DataType int
#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);
#endif //_STACK_H_
#include <assert.h>
#include <windows.h>
#include <stdio.h>
#include "Stack.h"
void StackInit(Stack* s)
{
assert(s);
s->_size = 0;
}
void StackPush(Stack* s, DataType data)
{
assert(s);
if (s->_size >= 10)
{
return;
}
else
{
s->_array[s->_size] = data;
s->_size++;
}
}
void StackPop(Stack* s)
{
assert(s);
if (s->_size > 0)
{
s->_size--;
}
}
DataType StackTop(Stack* s)
{
if (s->_size > 0)
{
return s->_array[(s->_size) - 1];
}
}
int StackSize(Stack* s)
{
return s->_size;
}
int StackEmpty(Stack* s)
{
if (s->_size == 0)
{
return 1;
}
else return 0;
}
int main()
{
Stack s;
StackInit(&s);
StackPush(&s, 0);
StackPush(&s, 1);
StackPush(&s, 2);
StackPush(&s, 3);
StackPush(&s, 4);
StackPush(&s, 5);
printf("Stack's size : %d \n", StackSize(&s));
StackPop(&s);
StackPop(&s);
printf("Stack's size : %d \n", StackSize(&s));
printf("Stack's Top Value : %d \n", StackTop(&s));
StackPop(&s);
StackPop(&s);
printf("Stack's size : %d \n", StackSize(&s));
printf("Stack's Top Value : %d \n", StackTop(&s));
printf("Stack's size : %d \n", StackSize(&s));
printf("Stack Is Empty Stack?: %d \n", StackEmpty(&s));
StackPop(&s);
StackPop(&s);
printf("Stack Is Empty Stack?: %d \n", StackEmpty(&s));
system("pause");
return 0;
}