zoukankan      html  css  js  c++  java
  • 栈[顺序栈]

    顺序栈借助游标top,主要在于栈空与栈满的判定!如图可以看出,栈空的标志是:top=-1,栈满的标志是top=MAXSIZE-1,当然,具体如何约束也可以自己约定!

    #define MAXSIZE 20
    typedef struct
    {
        int data[MAXSIZE];
        int top; /*栈顶*/
    }*SeqStack,Stack;

    初始化栈,将top置为-1;

    void InitStack(SeqStack &S)/*初始化*/
    {
        S->top=-1;
    }

    入栈和出栈

    入栈先将top++,然后插入数据,出栈,先取数据,再将top--;这个是比较容易理解的:

    完整代码

    #include <iostream>
    using namespace std;
    #define MAXSIZE 20
    #define OK 1
    #define ERROR 0
    typedef struct
    {
        int data[MAXSIZE];
        int top;
    }*SeqStack,Stack;
    void InitStack(SeqStack &S)/*初始化*/
    {
        S->top=-1;
    }
    int PushStack(SeqStack &S,int e)/*入栈*/ { if(S->top>=MAXSIZE-1) { cout<<"栈已满!"<<endl; return ERROR; } else { S->data[++S->top]=e; return OK; } } int PopStack(SeqStack &S,int &e)/*出栈*/ { if(S->top==-1) { cout<<"栈已空!"<<endl; return ERROR; } else { e=S->data[S->top--];return OK; } } int main(void) { int e; SeqStack S=(SeqStack)malloc(sizeof(Stack));/*堆中分配*/ InitStack(S);/*初始化*/ PushStack(S,12);/*入栈*/ PopStack(S,e);/*出栈*/ cout<<"S.top="<<S->top<<endl; cout<<"e="<<e<<endl; free(S);/*释放内存*/ return 0; }
  • 相关阅读:
    04:求整数的和与均值
    03:均值
    02:财务管理
    C8-3 三角形还是长方形? (100/100 分数)
    C8-2 圆的周长和面积 (100/100 分数)
    C8-1 复数加减乘除 (100/100 分数)
    C7-3 用类实现a+b (100/100 分数)
    C7-2 多继承 (100/100 分数)
    C7-1 账户类(100/100)
    数组第k小数
  • 原文地址:https://www.cnblogs.com/tinaluo/p/5237108.html
Copyright © 2011-2022 走看看