数据结构【静态栈】代码实现

时间:2022-07-22
本文章向大家介绍数据结构【静态栈】代码实现,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
#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);
}