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

    #include <iostream>
    using namespace std;
    
    #define MAXSIZE 100
    struct Stack
    {
        int* top;
        int* base;
        int stacksize;
    };
    
    //顺序栈的初始化
    bool initStack(Stack& s)
    {
        s.base = new int[MAXSIZE];   //1.分配一个数组空间给栈底,栈底表示数组的首地址。
        s.top = s.base;   //2.栈顶指向栈底
        s.stacksize = MAXSIZE;   //3.设置顺序栈的大小
    
        return true;
    }
    
    //判断顺序栈是否为空
    bool isEmpty(Stack& s)
    {
        return s.top == s.base;
    }
    
    //获取顺序栈的长度
    int getStackLength(Stack& s)
    {
        return s.top - s.base;
    }
    
    //清空顺序栈
    void clearStack(Stack& s)
    {
        if (s.base)
            s.top = s.base;
    }
    
    //销毁顺序栈
    void destroyStack(Stack& s)
    {
        if (!s.base)return;
    
        delete s.base;   //栈底指针相当于数组首地址
        s.stacksize = 0;
        s.top = s.base = nullptr;
    }
    
    //顺序栈的入栈
    bool push(Stack& s, int value)
    {
        if (!s.base)return false;
        if (s.top - s.base == s.stacksize)return false;   //1.判断是否栈满
    
        *(s.top) = value;   //2.将元素压入栈顶
        s.top++;   //3.栈顶指针加1
    
        return true;
    }
    
    //顺序栈的出栈
    bool pop(Stack& s, int& value)
    {
        if (s.top == s.base)return false;   //1.判断是否栈空
    
        s.top--;   //2.栈顶下移
        value = *(s.top);   //3.取值返回
    
        return true;
    }
    
    void main()
    {
        //栈不能遍历,只能出栈。
    
        Stack s;
        initStack(s);
    
        cout << "顺序栈" << (isEmpty(s) ? "为空" : "不为空") << endl;
    
        cout << "顺序栈入栈:" << endl;
        for (int i = 0; i < 10; i++)
            push(s, i);
    
        cout << "顺序栈长度:" << getStackLength(s) << endl;
    
        int value = 0;
        pop(s, value);
        cout << "顺序栈出栈:" << value << endl;
    
        clearStack(s);
        cout << "清空顺序栈!" << endl;
    
        destroyStack(s);
        cout << "销毁顺序栈!" << endl;
    }
  • 相关阅读:
    3.nginx反向代理服务器+负载均衡
    2.nginx整合PHP
    nginx-location rewrite
    Nginx(一):安装
    修改host文件原理 localhost,127.0.0.1之间有什么区别
    一个IP绑定多个域名
    私有IP
    转:Hadoop和Spark的异同
    C#中Trim()、TrimStart()、TrimEnd()的用法
    Java操作redis
  • 原文地址:https://www.cnblogs.com/tingtaishou/p/14946191.html
Copyright © 2011-2022 走看看