zoukankan      html  css  js  c++  java
  • 栈的基本实现代码

    /*栈的结构定义*/
    typedef int SElemType;
    typedef struct
    {
    SElemType data[MAXSIZE];
    int top;
    }SqStack;


    //进栈
    Status Push(SqStack *S,SElemType e)
    {
    if(S->top == MAXSIZE - 1)
    {
    return ERROR;
    }

    S -> top++;
    S -> data[S->top] = e;
    return OK;
    }

    //出栈
    Status Pop(SqStack *S,SElemType *e)
    {
    if(S->top == -1)
    return ERROR;
    *e = S->data[S->top];
    S->top++;

    return OK;
    }


    //两栈共享空间结构
    typedef struct
    {
    SElemType data[MAXSIZE];
    int top1;
    int top2;
    }SqDoubleStack;

    //插入元素e为新的栈顶元素
    Status Push(SqDoubleStack *S,SElemType e,int stackNumber)
    {
    if(s->top1 + 1 == s->top2)
    return ERROR;

    if(stackNumber == 1)
    S->data[++s->top1] = e;

    if(stackNumber == 2)
    S-data[--S->top2] == e;

    return OK;

    }


    //若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK,否则返回ERROR
    Status Pop(SqDoubleStack *S,SElemType *e,int stackNumber)
    {
    if(stackNumber == 1)
    {
    if(S->top1 == -1)
    return ERROR;
    *e = S->data[S->top1--];

    }
    else if(stackNumber ==2 )
    {
    if(S->top2 == MAXSIZE)
    return ERROR;

    *e = S->data[S->top2++];
    }
    return OK;
    }

    //栈的链式存储结构及实现---元素大小变化不可预测
    typedef struct StackNode
    {
    SElemType data;
    struct StackNode *next;

    }StackNode,*LinkStackPtr;

    typedef struct LinkStack
    {
    LinkStackPtr top;
    int count;
    }LinkStack;

    //插入元素e为新的栈顶元素
    Status Push(LinkStack *S,SElemType e)
    {
    LinkStack s = (LinkStackPtr) malloc (sizeof(StackNode))
    s->data = e;
    s->next = S-top;

    S->top = s;
    S->count ++;

    return OK;
    }


    //若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK,否则返回ERROR
    Status Pop(LinkStack *S,SElemType *e)
    {
    LinkStack P;

    if(StackEmpty(*s))
    return ERROR;

    *e = S->top->data;
    p->S-top;
    S-top = S-top->next;
    free(p);

    S->count--;

    return OK;
    }


  • 相关阅读:
    BZOJ1229 USACO2008 Nov toy 玩具 【三分+贪心】*
    BZOJ1304 CQOI2009 叶子的染色 【树形DP】
    BZOJ1131 POI2008 Sta 【树形DP】
    BZOJ1096 ZJOI2007 仓库建设 【斜率优化DP】
    BZOJ4540 Hnoi2016 序列 【莫队+RMQ+单调栈预处理】*
    Codeforces 1012C Hills【DP】*
    POJ1741 Tree + BZOJ1468 Tree 【点分治】
    BZOJ2152 聪聪可可 【点分治】
    HDU1693 Eat the Trees 【插头DP】*
    RUAL1519 Formula 1 【插头DP】
  • 原文地址:https://www.cnblogs.com/zxj-262410/p/6571960.html
Copyright © 2011-2022 走看看