スタックのシーケンスストレージ実装-単純なスタックおよびスタックの出力


/************************************************************************
*
*    :2.2.1.cpp
*
*     :        
*
*    :  fdk

*     :  2018-07-30
*
*    :1.0
*
*     :
*
************************************************************************/
#include 
#include 

/*          100*/
#define MAXSIZE 100
using namespace std;

/*     */
typedef struct
{
    /*    */
    int data[MAXSIZE];

    /*           */
    int top;
}stacks;

/*     */
stacks *CreateStack();

/*      */
void Push(stacks *ptrs, int x);

/*      */
int Pop(stacks *ptrs);
int main()
{
    int i;
    int j;
    int a[] = {2, 4, 5, 1, -2, 4, 6, 10};
    stacks *s = CreateStack();

    /*    */
    cout << "     :";
    for (i = 0; i < sizeof(a) / sizeof(a[0]); i++)
    {
        cout << a[i] << " ";
        Push(s, a[i]);
    }
    cout << endl;

    /*    */
    cout << "     :";
    for (i = 0; i < sizeof(a) / sizeof(a[0]); i++)
    {
        cout << Pop(s) << " ";
    }
    cout << endl;
    return 0;
}

/*     */
stacks *CreateStack()
{
    /*         ,malloc                */
    stacks *s = (stacks*)malloc(sizeof(stacks));

    /*      */
    s->top = -1;
    return s;
}

/*      */
void Push(stacks *ptrs, int x)
{
    if (ptrs->top == MAXSIZE - 1)
    {
        cout << "    !" << endl;
        return;
    }
    else
    {
        /*            */
        ptrs->data[++(ptrs->top)] = x;
        return;
    }
}

/*      */
int Pop(stacks *ptrs)
{
    if (ptrs->top == -1)
    {
        cout << "  !" << endl;
        exit(0);
    }
    else
    {
        /*            */
        return (ptrs->data[(ptrs->top)--]);
    }
}