栈(模板)、队列(模板)(9.27)

cpp 复制代码
#include <iostream>
#include<vector>
using namespace std;
template<typename T>
class my_stack
{
private:
    vector<T> *data;

public:
    my_stack() :data(new vector<T>()){}
    ~my_stack(){delete data;};
    bool empty();
    //入栈
    void push(int a);
    void pop();
    //栈顶
    int top();
    //栈大小
    size_t size();
};

template<typename T>
bool my_stack<T>::empty()
{
    cout<<"栈为空栈"<<endl;
    return data->empty();
}


template<typename T>
void my_stack<T>::push(int a){
    data->push_back(a);
    cout<<"入栈成功"<<endl;
}

template<typename T>
void my_stack<T>::pop(){
    if(data->empty()==0)
    {
        cout<<"出栈:"<<(int)data->back()<<endl;
         data->pop_back();
         return;
    }
    cout<<"栈为空栈"<<endl;
    return;
}

template<typename T>
//栈顶
int my_stack<T>::top(){
    if(data->empty()==0)
    {
         return data->back();
    }
    std::cout<<"栈为空栈"<<std::endl;
    return 0;
}

template<typename T>
//栈大小
size_t my_stack<T>::size(){
    return data->size();
}

int main()
{
    my_stack <int>s;
    s.push(1);
    s.push(2);
    s.push(3);
    s.push(4);
    s.pop();
    cout<<"top:"<<s.top()<<endl;
    s.pop();
    s.pop();
    s.pop();
    cout<<"栈大小:"<<s.size()<<endl;
    s.empty();
    return 0;
}

队列

cpp 复制代码
#include <iostream>
#include <vector>
using namespace std;

template <typename T>
class my_queue
{
private:
    vector <T>*data;
public:
    my_queue() :data(new vector<T>){}
    ~my_queue(){delete data;}
    bool empty();
    //入队
    void push(int a);
    //出队
    void pop();
    //队头
    int top();
    //队大小
    size_t size();
};
template <typename T>
bool my_queue<T>::empty()
{
cout<<"队列为空队"<<endl;
return data->empty();
}


//入队
template <typename T>
void my_queue<T>::push(int a){
data->push_back(a);
cout<<data->back()<<"入队成功:"<<endl;
}

//出队
template <typename T>
void my_queue<T>::pop(){
if(data->empty()==0)
{

    cout<<"出队:"<<data->front()<<endl;
    data->erase(data->begin());
}
else
{
cout<<"队列为空队"<<endl;
}
return;
}


//队头
template <typename T>
int my_queue<T>::top(){
if(data->empty()==0)
{
     return data->front();
}
std::cout<<"队列为空队"<<std::endl;
return 0;
}

//队大小
template <typename T>
size_t my_queue<T>::size(){
return data->size();
}

int main()
{
    my_queue<int> s;
    s.push(1);
    s.push(2);
    s.push(3);
    s.push(4);
    cout<<"队大小:"<<s.size()<<endl;
    s.pop();
    cout<<"top:"<<s.top()<<endl;

    s.pop();
    s.pop();
    s.pop();
    cout<<"队大小:"<<s.size()<<endl;
    s.empty();
    return 0;
}
相关推荐
他们都不看好你,偏偏你最不争气4 分钟前
【iOS】UIViewController
开发语言·macos·ios·objective-c·cocoa
Pocker_Spades_A14 分钟前
Python快速入门专业版(二十二):if语句进阶:嵌套if与条件表达式(简洁写法技巧)
开发语言·python
fangzelin523 分钟前
算法-滑动窗口
数据结构·算法
看海的四叔27 分钟前
【Python】Python解决阿里云DataWorks导出数据1万条限制的问题
开发语言·python·阿里云·dataworks·maxcomputer
吾日三省吾码27 分钟前
用 Python UTCP 直调 HTTP、CLI、MCP……
开发语言·python·http
LoveXming28 分钟前
Chapter4—工厂方法模式
c++·设计模式·简单工厂模式·工厂方法模式·开闭原则
青草地溪水旁30 分钟前
设计模式(C++)详解—工厂方法模式(2)
c++·工厂方法模式
深耕AI32 分钟前
MFC 图形设备接口详解:小白从入门到掌握
c++·mfc
青草地溪水旁34 分钟前
设计模式(C++)详解—工厂方法模式(1)
c++·工厂方法模式
·白小白39 分钟前
C++类(上)默认构造和运算符重载
c++·学习