7.18 C++

封装顺序栈

#include <iostream>
#define MAXSIZE 10
using namespace std;
class My_stack
{
private:
    int *ptr;  //执行堆区空间
    int top;  //记录栈顶元素

public:
    My_stack(int size,int top):ptr(new int[size]),top(top){}
    int Getsize();  //有参构造,获取栈的大小
    ~My_stack();//    析构函数
    bool Isempty();//    判空函数
    bool Isfull();//    判满函数
    int Push(int elem);//    入栈函数
    void Pop();//    出栈函数
    void Output();//    遍历栈
    int Getelem();//    获取栈顶元素的引用
    void BubbleSort();//    排序
};

//无参构造,获取栈的实际大小
int My_stack::Getsize()
{
     return top-1;
}
//无参构造,析构函数
My_stack::~My_stack()
{
    delete []ptr;
    ptr=nullptr;
}
//无参构造,判空函数
bool My_stack::Isempty()
{
    if(top==-1)
        return true;
    return false;
}
//无参构造,判满函数
bool My_stack::Isfull()
{
    if(top==MAXSIZE-1)
        return true;
    return false;
}
//有参构造,入栈函数
int My_stack::Push(int elem)
{
    if(Isfull())
        return false;
    ++top;
    *(ptr+top)=elem;


}
//无参构造,出栈函数
void My_stack::Pop()
{
    if(Isempty())
        return;
    top--;

}
//无参构造,遍历栈
void My_stack::Output()
{
    if(Isempty())
        return;
    for(int i=0;i<=top;i++)
    {
        cout<<*(ptr+i)<<" ";
    }
}
//无参构造,获取栈顶元素的引用
int My_stack::Getelem()
{
    return *(ptr+top);
}
//无参构造,排序
void My_stack::BubbleSort()
{
    int tmp;
    for(int i=0;i<top-1;i++)
    {
        for(int j=0;j<top-i-1;j++)
        {
            if(*(ptr+j)>*(ptr+j+1))
            {
                tmp=*(ptr+j);
                *(ptr+j)=*(ptr+j+1);
                *(ptr+j+1)=tmp;
            }
        }
    }
    Output();
}
int main()
{
    My_stack stack(MAXSIZE,-1);
    stack.Push(10);
    stack.Push(5);
    stack.Push(16);
    stack.Push(20);
    stack.Push(6);
    stack.Pop();
    stack.Output();
    cout<<endl;
    int a=stack.Getelem();
    cout<<a<<endl;
    stack.BubbleSort();

    return 0;
}

思维导图

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值