堆栈作业1:实现顺序栈(字符型数据为例)

#include<cstdio>
#include<cstring>
#include<algorithm>
#include <iostream>
using namespace std;
//堆栈类
const int Max = 100;
class Stack//栈类的定义(字符型数据为例)
{
private:
    char* date;//数据域
    int size;//堆栈的实际大小
    int top;//栈顶

public:
    Stack();//构造函数
    Stack(int s);//有参构造函数
    ~Stack();//析构函数
    void push(char ch);//成员函数:入栈
    char pop();//成员函数: 出栈并返回栈顶元素
    char getTop();//成员函数: 获得栈顶元素
    bool isEmpty();//成员函数:栈是否为空
    bool isFull(); //成员函数:栈是否满
    void setNull();//设置栈为空
};
//构造函数
Stack::Stack()
{
    size = Max;
    top = -1;
    date = new char[Max]; //缺省构造函数分配最大空间;
}
Stack::Stack(int s)
{
    size = s;
    top = -1;
    date = new char[size];//根据指定大小分配栈的空间
}
Stack::~Stack()
{
    delete[] date;//一定要记得内存回收
}
//成员函数
void Stack::push(char ch)
{
    //实现单一功能,不要有输入输出等别的功能
    if (!isFull())
    {
        date[++top] = ch;
    }
}
char Stack::pop()
{
    if (!isEmpty())
    {
        return date[top--];
    }
}
char Stack::getTop()
{
    if (!isEmpty())
    {
        return date[top];
    }
}
bool Stack::isEmpty()
{
    if (top == -1)
    {
        return true;
    }
    else
    {
        return false;
    }
}
bool Stack::isFull()
{
    if (top +1 == size)
    {
        return true;
    }
    else
    {
        return false;
    }
}
void Stack::setNull()
{
    top = -1;
}
int main()
{
    //测试
    Stack s1(2);
    s1.push('a');
    s1.push('b');
    cout << s1.isFull() << endl;
    cout << s1.getTop() << endl;
    cout << s1.pop() << endl;
    cout << s1.pop() << endl;
    cout << s1.isEmpty() << endl;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值