#include "stdafx.h"
#include "MyStack.h"
#include <cstdlib>
#include <iostream>
#include "Define.h"
using namespace std;
/* ==============================================================================
==============================================================================
LinkedList Stack
============================================================================== */
void StackInit(Stack * pStack)
{
if (pStack == NULL) return;
pStack->head = NULL;
}
int SIsEmpty(Stack * pStack)
{
if (pStack == NULL) return TRUE;
return (pStack->head == NULL) ? TRUE : FALSE;
}
void SPush(Stack * pStack, Data data)
{
if (pStack == NULL) return;
Node * pNew = (Node *)malloc(sizeof(Node));
pNew->data = data;
pNew->next = pStack->head;
pStack->head = pNew;
}
Data SPop(Stack * pStack)
{
if (pStack == NULL) return 0;
if (SIsEmpty(pStack)) return 0;
Node * pDel = pStack->head;
Data rData = pDel->data;
pStack->head = pStack->head->next;
free(pDel);
return rData;
}
Data SPeek(Stack * pStack)
{
if (pStack == NULL) return 0;
if (SIsEmpty(pStack)) return 0;
return pStack->head->data;
}
/* ==============================================================================
==============================================================================
Array Stack
============================================================================== */
/*
void StackInit(Stack * pStack)
{
if (pStack == NULL) return;
memset(pStack, 0x00, sizeof(Stack));
pStack->topIndex = -1;
}
int SIsEmpty(Stack * pStack)
{
if (pStack == NULL) return TRUE;
return (pStack->topIndex == -1) ? TRUE : FALSE;
}
int SIsFull(Stack * pStack)
{
if (pStack == NULL) return TRUE;
return (pStack->topIndex >= STACK_LEN - 1) ? TRUE : FALSE;
}
void SPush(Stack * pStack, Data data)
{
if (pStack == NULL) return;
if (SIsFull(pStack)) return;
pStack->stackArray[++pStack->topIndex] = data;
}
Data SPop(Stack * pStack)
{
if (pStack == NULL) return 0;
if (SIsEmpty(pStack)) return 0;
return pStack->stackArray[pStack->topIndex--];
}
Data SPeek(Stack * pStack)
{
if (pStack == NULL) return 0;
if (SIsEmpty(pStack)) return 0;
return pStack->stackArray[pStack->topIndex];
}
*/