#include "pch.h"
#include <iostream>
typedef struct sTack
{
int * pData;
int nSize;
int nTop;
} *PSTACK;
void initStack(PSTACK pStack, int nSize);
bool stack_isEmpty(PSTACK pStack);
bool stack_isFull(PSTACK pStack);
void stack_push(PSTACK pStack, int nData);
void stack_pop(PSTACK pStack, int &nData);
void show_stack(PSTACK pStack);
void initStack(PSTACK pStack, int nSize)
{
pStack->pData = (int*)malloc(sizeof(int) * nSize);
pStack->nSize = nSize;
pStack->nTop = 0;
}
bool stack_isEmpty(PSTACK pStack)
{
if (pStack->nTop == 0)
{
return true;
}
return false;
}
bool stack_isFull(PSTACK pStack)
{
if (pStack->nTop == pStack->nSize)
{
return true;
}
return false;
}
void stack_push(PSTACK pStack, int nData)
{
if (stack_isFull(pStack))
{
std::cout << "栈空间满了!!" << std::endl;
return;
}
pStack->pData[pStack->nTop] = nData;
pStack->nTop++;
}
void stack_pop(PSTACK pStack, int & nData)
{
if (stack_isEmpty(pStack))
{
std::cout << "栈空间空了!!" << std::endl;
return;
}
nData = pStack->pData[pStack->nTop - 1];
pStack->nTop--;
}
void show_stack(PSTACK pStack)
{
if (stack_isEmpty(pStack))
{
return;
}
for (int i = pStack->nSize - 1; i >= 0; --i)
{
std::cout << pStack->pData[i] << "\t";
}
std::cout << std::endl;
}
int main()
{
sTack s;
initStack(&s, 6);
stack_push(&s, 1);
stack_push(&s, 2);
stack_push(&s, 3);
stack_push(&s, 4);
stack_push(&s, 5);
stack_push(&s, 6);
int nData;
stack_pop(&s, nData);
std::cout << "弹出的元素为:" << nData << std::endl;
stack_push(&s, 7);
show_stack(&s);
}