zoukankan      html  css  js  c++  java
  • D_S 顺序栈的基本操作

    //  main.cpp

    #include <iostream>

    using namespace std;

    #include "Status.h"

    typedef int SElemType;

    #include "SqStack.h"

    int main()

    {

        SqStack S;

        SElemType e;

        InitStack(S);

        Push(S,2);

        Push(S,4);

        Push(S,6);

        Push(S,8);

        cout<<" 由栈底至栈顶的元素为:";

        StackTraverse(S);

        cout<<" 栈的长度为:"<<StackLength(S)<<endl;

        GetTop(S,e);

        cout<<" 栈顶元素为:"<<e<<endl;

        Pop(S,e);

        cout<<" 由栈底至栈顶的元素为:";

        StackTraverse(S);

        cout<<" 栈的长度为:"<<StackLength(S)<<endl;

        GetTop(S,e);

        cout<<" 栈顶元素为:"<<e<<endl;

        return 0;

    }

    //  Status.h

    #ifndef yuan_Status_h

    #define yuan_Status_h

    #define TRUE 1

    #define FALSE 0

    #define OK 1

    #define ERROR 0

    #define INFEASIBLE -1

    #define OVERFLOW -2

    typedef int Status;

    #endif

    //  SqStack.h

    #ifndef Y_Y_SqStack_h

    #define Y_Y_SqStack_h

    #define MAXSIZE 100

    typedef struct{

        SElemType *base;

        SElemType *top;

        int stacksize;

    }SqStack;

    Status InitStack(SqStack &S)

    {

        S.base=new SElemType[MAXSIZE];  //为顺序栈分配一个最大容量为MAXSIZE的数组空间

        if(!S.base)  exit(OVERFLOW);

        S.top=S.base;

        S.stacksize=MAXSIZE;

        return OK;

    }

    Status Push(SqStack &S,SElemType e)

    {

        if (S.top-S.base==S.stacksize) return ERROR;  //满栈

        *S.top++=e;  //元素e压入栈顶,栈顶指针加1

        return OK;

    }

    Status Pop(SqStack &S,SElemType &e)

    {

        if(S.top==S.base) return ERROR;  //空栈

        e=*--S.top;  //栈顶指针减1,将栈顶元素赋给e

        return OK;

    }

    Status StackLength(SqStack S)

    {

        return (int)(S.top-S.base);

    }

    Status GetTop(SqStack S,SElemType e)

    {

        if (S.top==S.base) exit(1);

        return *(S.top-1);  //栈顶指针减1,返回栈顶元素

    }

    void StackTraverse(SqStack S)

    {

        SElemType *p;

        p=S.base;

        while(p!=S.top)

        {

            cout<<*p++<<"  ";

        }

        cout<<endl;

    }

    #endif

  • 相关阅读:
    使用Eclipse创建Maven的JSP项目
    MySQL远程访问
    IDEA创建web工程,不用Archetype(超简单)
    IDEA创建web工程(超简单)
    共享软件
    C语言讲义——链表完整代码
    base64图片显示问题
    JAVA 判断一个字符串是否是合法的日期格式?
    SpringBoot配置本地文件映射路径
    SpringBoot读取资源目录下的文件
  • 原文地址:https://www.cnblogs.com/YuanYe1/p/5014687.html
Copyright © 2011-2022 走看看