栈(模板)、队列(模板)(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;
}
相关推荐
a诠释淡然6 小时前
C++ vs Rust:哪个更适合你的下一个项目?
开发语言·c++·rust
meilindehuzi_a6 小时前
深入理解 JavaScript 执行机制:从编译阶段到调用栈底层实现
开发语言·javascript·ecmascript
小小de风呀6 小时前
de风——【从零开始学C++】(十二):stack和queue的基本使用和模拟实现
开发语言·c++
huohaiyu6 小时前
深入解析Java垃圾回收机制
java·开发语言·算法·gc
汉克老师6 小时前
GESP6级C++考试语法知识(五十三、动态规划----背包问题(六、分组背包)
c++·动态规划·背包问题·gesp6级·gesp六级·分组背
浮芷.6 小时前
鸿蒙PC端 TTS 并发调用问题详解:资源竞争与队列管理
算法·华为·开源·harmonyos·鸿蒙·鸿蒙系统
YsyaaabB6 小时前
LangChain作业二---多语言翻译Prompt
开发语言·python·langchain
SunnyDays10116 小时前
如何在 Java 中实现 OFD 与 PDF 格式互转
java·开发语言
装不满的克莱因瓶6 小时前
掌握感知器的学习原理
人工智能·python·神经网络·算法·ai·卷积神经网络
Lsk_Smion6 小时前
力扣实训 _ [994].腐烂的橘子/图论
算法·leetcode·图论