栈的定义和简单使用

栈(Stack)其实也是线性结构,但只是在操作上有点不一样,栈的特点,后进先出(FILO),所以他也有不同的应用,比如进制转换啊,括号匹配问题啊,表达式求值问题啊,很多问题都是可以用栈来解决,

下面来说说栈的定义和栈上面的相关操作,

1.定义栈的节点

#include 
#include 
#define MaxSize 100

typedef struct 
{
    int* base;
    int* top;
    int StackSize;

}Stack;

2.栈的初始化操作

int initStack(Stack *s) 
{
    s->base = (int*)malloc(sizeof(Stack) * MaxSize);
    if (s->base)
    {
        s->top = s->base;
        s->StackSize = MaxSize;
        return 0;
    }
    else {
        return -1;
    }
}

3.获得栈的大小

int getSize(Stack* s) 
{
    return s->StackSize;

}

4.获得栈顶元素操作

int getElem(Stack* s) 
{
    if (s->base!=s->top)
    {
        return *(s->top-1);
    }
    else
    {
        return -1;
    }
    

}

5.入栈操作

int pushStack(Stack *s,int e) 
{
    if (s->top-s->baseStackSize)
    {
        *(s->top++) = e;
        return 0;
    }
    else
    {
        return -1;
    }

}

6.出栈操作

int popStack(Stack *s,int e)
{
    if (s->base!=s->top)
    {
        e = *(--s->top);
        return e;
    }
    else
    {
        return -1;
    }
}

 

好了,我们下回见,peace

你可能感兴趣的:(栈的定义和简单使用)