C++-DAY(6)-(多态、虚函数.......)

题目:

手动实现顺序栈,要求实现数据结构中,所有栈的相关操作

main.c

#include <iostream>
#include <cstring>
#define MAXSIZE 10  //栈的大小

using namespace std;

//创建模板类
template <typename T>
class My_stack
{
private:

    //数据元素
    T *data;

    //栈顶
    int top;

    T buf;

public:

    //创建栈
    My_stack();

    //判断栈是否为满
    bool stack_full();

    //判断栈是否为空
    bool stack_empty();

    //栈的插入
    void stack_inset(T buf);

    //栈的删除
    void stack_delete();

    //栈的遍历
    void stack_show();

    //析构函数
    ~My_stack();
};

//创建栈
template <typename T>
My_stack<T> ::My_stack()
{

    data = new T[MAXSIZE]; //为栈创建空间
    if(nullptr == data)
    {
        cout << "stack_create filed" << endl;
        return;
    }

    //栈空
    top = -1;
}

//判断栈是否为满
template <typename T>
bool My_stack<T> ::stack_full()
{
    if(MAXSIZE -1 == top)
    {
        return false;
    }
    else
    {
        return true;
    }
}

//判断栈是否为空
template <typename T>
bool My_stack<T> ::stack_empty()
{
    if(-1 == top)
    {
        return false;
    }
    else
    {
        return true;
    }
}

//栈的插入
template <typename T>
void My_stack<T> ::stack_inset(T buf)

{
    //判断栈是否为满
    if(stack_full() == 0)
    {
        cout << top << endl;
        cout << "栈满_插入失败" << endl;
        return;
    }

    //入栈
    data[++top] = buf;
}

//栈的删除
template <typename T>
void My_stack<T> ::stack_delete()
{
    //判断栈是否为空
    if(stack_empty() == 0)
    {
        cout << "栈空_删除失败" << endl;
        return;
    }

    //删除,先弹后减
    cout << "删除的元素:" << data[top--] << endl;
}

//栈的遍历
template <typename T>
void My_stack<T> ::stack_show()
{
    //循环输出
    for(int i = 0; i <= top; i++)
    {
        cout << data[i] << endl;
    }
}

template <typename T>
My_stack<T> ::~My_stack<T>()
{
    delete []data;
}



int main()
{
    string buf;

    My_stack<string> s;

    for(int i = 1; i <= MAXSIZE; i++)
    {
        cout << "请插入[" << i << "] :";
        cin >> buf;
        s.stack_inset(buf);
    }

    s.stack_show();

    s.stack_delete();

    s.~My_stack();

    return 0;
}

结果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值