C++day6

将之前定义的栈类和队列类都实现成模板块

#include 
#define MAX 5
using namespace std;

template
class Stack
{
private:
    T *data;
    int top;

public:
    //构造函数
        Stack();
        //析构函数
        ~Stack();
        //拷贝构造函数
        Stack(const Stack &other);
        //入栈
        int push(T e);
        //出栈
        int pop();
        //清空栈
        void clear();
        //判空
        bool empty();
        //判满
        bool full();
        //获取栈顶元素
        T topdata();
        //求栈的大小
        int size();
};
//构造函数
template
Stack::Stack():data(new T[MAX]),top(-1){
    cout<<"构造函数"<
Stack::~Stack(){
    delete []data;    //释放指针空间
    cout<<"析构函数"<
Stack::Stack(const Stack &other):data(new T[MAX]),top(other.top){
    std::copy(other.data,other.data+MAX,data);
    cout<<"拷贝函数"<
int Stack::push(T e){
    if(Stack::full()){
        cout<<"栈满,无法入栈;"<
int Stack::pop(){
    if(Stack::empty()){
        cout<<"栈空,无法出栈;"<
void Stack::clear(){
    cout<<"****清空栈****"<
bool Stack::empty(){
    return -1 == top;
}
//判满
template
bool Stack::full(){
    return MAX-1 == top;
}
//获取栈顶元素
template
T Stack::topdata(){
    cout<<"栈顶元素为:";
    return data[top];
}
//求栈的大小
template
int Stack::size(){
    cout< s;
    s.push("w");
    s.push("z");
    s.push("h");
    s.push("w");
    s.push("z");
    s.push("h");
    cout< s2=s;
    cout< s3=s2;
    cout<

队列

#include 
#define MAX 5
using namespace std;
template
class Queue{
private:
    int front;
    int tail;
    T *data;
    
public:
    //构造函数
    Queue();
    //析构函数
    ~Queue();
    //拷贝构造函数
    Queue(const Queue &other);
    //入队
    int push(T e);
    //出队
    int pop();
    //清空队列
    void clear();
    //判空
    bool empty();
    //判满
    bool full();
    //求队列大小
    int size();
    
    
};
template
//构造函数
Queue::Queue():front(0),tail(0),data(new T[MAX])
{
    cout<<"构造函数"<
//析构函数
Queue::~Queue(){
    delete []data;
    cout<<"析构函数"<
Queue::Queue(const Queue &other):front(other.front),
    tail(other.tail),
    data(new T[MAX]){
    std::copy(other.data,other.data+MAX,data);
    cout<<"拷贝构造函数"<
int Queue::push(T e){
    if(Queue::full()){
        cout<<"队满,无法入队;"<
int Queue::pop(){
    if(Queue::empty()){
        cout<<"队空,无法出队;"<
void Queue::clear(){
    cout<<"****清空队列****"<
bool Queue::empty(){
    return front==tail;
}
//判满
template
bool Queue::full(){
    return (tail+1)%MAX==front;
}
//求队列大小
template
int Queue::size(){
    cout< q;
    q.push(1);
    q.push(2);
    q.push(3);
    q.push(4);
    q.push(5);
    cout< q2=q;
    cout< q3=q2;
    cout<

C++day6_第1张图片

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