C++ day3

1> 自行封装一个栈的类,包含私有成员属性:栈的数组、记录栈顶的变量

成员函数完成:构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小

2> 自行封装一个循环顺序队列的类,包含私有成员属性:存放队列的数组、队头位置、队尾位置

成员函数完成:构造函数、析构函数、拷贝构造函数、入队、出队、清空队列、判空、判满、求队列大小

#include 
 
  
using namespace std;
#define MAX 5
typedef int datatype;
 
  
class Stack{
public:
    //构造函数
    Stack();
    //析构函数
    ~Stack();
    //拷贝构造函数
    Stack(const Stack &other);
    //入栈
    int push(datatype e);
    //出栈
    int pop();
    //清空栈
    void clear();
    //判空
    bool empty();
    //判满
    bool full();
    //获取栈顶元素
    datatype topdata();
    //求栈的大小
    int size();
private:
    datatype *data;
    int top;
};
 
  
 
  
//构造函数
Stack::Stack():data(new datatype[MAX]),top(-1){
    cout<<"构造函数"< 
  
}
//析构函数
Stack::~Stack(){
    delete []data;    //释放指针空间
    cout<<"析构函数"< 
  
}
//拷贝构造函数
Stack::Stack(const Stack &other):data(new datatype[MAX]),top(other.top){
    std::copy(other.data,other.data+MAX,data);
    cout<<"拷贝函数"< 
  
}
//入栈
int Stack::push(datatype e){
    if(Stack::full()){
        cout<<"栈满,无法入栈;"< 
  
        return 0;
    }
    data[++top]=e;
    cout< 
  
    return 1;
}
//出栈
int Stack::pop(){
    if(Stack::empty()){
        cout<<"栈空,无法出栈;"< 
  
        return 0;
    }
    cout< 
  
    return 1;
}
//清空栈
void Stack::clear(){
    cout<<"****清空栈****"< 
  
    while(!Stack::empty()){
        Stack::pop();
    }
}
//判空
bool Stack::empty(){
    return -1 == top;
}
//判满
bool Stack::full(){
    return MAX-1 == top;
}
//获取栈顶元素
datatype Stack::topdata(){
    cout<<"栈顶元素为:";
    return data[top];
}
//求栈的大小
int Stack::size(){
    cout< 
  
    return top+1;
}
 
  
 
  
int main()
{
    Stack s;
        s.push(1);
        s.push(2);
        s.push(3);
        s.push(4);
        s.push(5);
        s.push(6);
        cout< 
  
        Stack s2=s;
        cout< 
  
        Stack s3=s2;
        cout< 
  
        s3.pop();
        s3.pop();
        s3.pop();
        cout< 
  
        s3.clear();
        s3.pop();
        cout< 
  
        cout< 
  
    return 0;
}
 
  

你可能感兴趣的:(c++,算法,开发语言)