C++&QT day6

这篇具有很好参考价值的文章主要介绍了C++&QT day6。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

栈:

#include <iostream>
#define MAX 128
using namespace std;
template<typename T>
class Stack_s
{
private:
    T *p=new T[MAX];//栈的数组
    int top;//记录栈顶的变量
public:
    //构造函数
    Stack_s(int t=-1)
    {
        top=t;
        cout<<"无参构造函数"<<endl;
    }
    //析构函数
    ~Stack_s()
    {
        cout<<"Stack::析构函数"<<endl;
    }
    //拷贝构造函数
    Stack_s(const Stack_s &other):p(new T(p)),top(other.top)
    {
        cout<<"拷贝构造函数"<<endl;
    }
    //入栈
    int stack_push(T e);
    //出栈
    int stack_pop();
    //清空栈
    int stack_delete();
    //判空
    bool stack_empty();
    //判满
    bool stack_full();
    //获取栈顶元素
    int stack_gettop();
    //栈的大小
    void stack_getsize();
    void show(int i)
    {
        cout<<p[i]<<" ";
    }
};
//入栈
template<typename T>
int Stack_s<T>::stack_push(T e)
{
    if(stack_full())
    {
        cout<<"入栈失败"<<endl;
        return -1;
    }
    top++;
    p[top]=e;
    cout<<"入栈成功"<<endl;
    return 0;
}
//出栈
template<typename T>
int Stack_s<T>::stack_pop()
{
    if(stack_empty())
    {
        cout<<"出栈失败"<<endl;
        return -1;
    }
    T e=p[top];
    top--;
    cout<<e<<" 出栈成功"<<endl;
    return 0;
}
//清空栈
template<typename T>
int Stack_s<T>::stack_delete()
{
    while(top!=-1)
    {
        stack_pop();
    }
    delete [] p;
    p=nullptr;
    cout<<"清空栈成功"<<endl;
    return 0;
}
//判空
template<typename T>
bool Stack_s<T>::stack_empty()
{
    if(top==-1)
    {
        cout<<"栈空"<<endl;
        return 1;
    }
    return 0;
}
//盘满
template<typename T>
bool Stack_s<T>::stack_full()
{
    if(top==MAX-1)
    {
        cout<<"栈满了"<<endl;
        return 1;
    }
    return 0;
    return 0;
}
//获取栈顶元素
template<typename T>
int Stack_s<T>::stack_gettop()
{
    cout<<"栈顶元素是:"<<p[top]<<endl;
    return 0;
}
//栈的大小
template<typename T>
void Stack_s<T>::stack_getsize()
{
     cout<<"栈的大小为:"<<top+1<<endl;
}
int main()
{
    //实例一个string类型的栈
    Stack_s<string> s1;
    string e;
    int l;
    s1.stack_empty();
    cout<<"请输入要入栈的个数:";
    cin>>l;
    for(int i=0;i<l;i++)
    {
        cout<<"请输入要入栈的元素:";
        cin>>e;
        s1.stack_push(e);
    }
    s1.stack_gettop();
     s1.stack_getsize();
    for(int i=0;i<l;i++)
    {
        s1.show(i);
    }
    cout<<endl;
    s1.stack_delete();
    //实例一个char类型的栈
    Stack_s<char> s2;
    char e1;
    int l1;
    s1.stack_empty();
    cout<<"请输入要入栈的个数:";
    cin>>l1;
    for(int i=0;i<l1;i++)
    {
        cout<<"请输入要入栈的元素:";
        cin>>e1;
        s2.stack_push(e1);
    }
    s2.stack_gettop();
     s2.stack_getsize();
    for(int i=0;i<l1;i++)
    {
        s2.show(i);
    }
    cout<<endl;
    s2.stack_delete();
    return 0;
}

结果:

C++&QT day6,c++,qt,开发语言

队列:

#include <iostream>
#define MAX 128
using namespace std;
template<typename T>
class Queue_q
{
private:
    T *p=new T[MAX];//队列的数组
    int tail;//记录队尾元素
    int head;//记录对头元素
public:
    //构造函数
    Queue_q(int t=0)
    {
        head=t;
        tail=t;
        cout<<"无参构造函数"<<endl;
    }
    //析构函数
    ~Queue_q()
    {
        cout<<"Stack::析构函数"<<endl;
    }
    //拷贝构造函数
    Queue_q(const Queue_q &other):p(new T(p)),tail(other.tail),head(other.head)
    {
        cout<<"拷贝构造函数"<<endl;
    }
    //入队
    int queue_push(T e);
    //出队
    int queue_pop();
    //清空队列
    int queue_delete();
    //判空
    bool queue_empty();
    //判满
    bool queue_full();
    //队列的大小
    void queue_getsize();
    void show(int i)
    {
         cout<<p[i]<<" ";
    }
};
//入队
template<typename T>
int Queue_q<T>::queue_push(T e)
{
    if(queue_full())
    {
        cout<<"入队失败"<<endl;
        return -1;
    }
    p[tail]=e;
    tail=(tail+1)%MAX;
    cout<<"入队成功"<<endl;
    return 0;
}
//出队
template<typename T>
int Queue_q<T>::queue_pop()
{
    if(queue_empty())
    {
        cout<<"出队失败"<<endl;
        return -1;
    }
    T e=p[head];
    head=(head+1)%MAX;
    cout<<e<<" 出队成功"<<endl;
    return 0;
}
//清空队列
template<typename T>
int Queue_q<T>::queue_delete()
{
    while(head!=tail)
    {
        queue_pop();
    }
    delete [] p;
    p=nullptr;
    cout<<"清空队列成功"<<endl;
    return 0;
}
//判空
template<typename T>
bool Queue_q<T>::queue_empty()
{
    if(head==tail)
    {
        cout<<"队列空"<<endl;
        return 1;
    }
    return 0;
}
//判满
template<typename T>
bool Queue_q<T>::queue_full()
{
    if((tail+1)==0)
    {
        cout<<"队列满了"<<endl;
        return 1;
    }
    return 0;
}
//队列的大小
template<typename T>
void Queue_q<T>::queue_getsize()
{
    int size;
    size=(tail-head+MAX)%MAX;
    cout<<"队的大小为:"<<size<<endl;
}
int main()
{
    //实例一个double类型的队列
    Queue_q<double> q1;
    double e;
    int s;
    q1.queue_empty();
    cout<<"请输入要入队的个数:";
    cin>>s;
    for(int i=0;i<s;i++)
    {
        cout<<"请输入要入队的元素:";
        cin>>e;
        q1.queue_push(e);
    }
     q1.queue_getsize();
    for(int i=0;i<s;i++)
    {
        q1.show(i);
    }
    cout<<endl;
    q1.queue_delete();
    //实例一个string类型的队列
    Queue_q<string> q2;
    string e1;
    int s2;
    q2.queue_empty();
    cout<<"请输入要入队的个数:";
    cin>>s2;
    for(int j=0;j<s2;j++)
    {
        cout<<"请输入要入队的元素:";
        cin>>e1;
        q2.queue_push(e1);
    }
     q2.queue_getsize();
    for(int j=0;j<s2;j++)
    {
        q2.show(j);
    }
    cout<<endl;
    q2.queue_delete();
    return 0;

}

结果:

C++&QT day6,c++,qt,开发语言

思维导图:

C++&QT day6,c++,qt,开发语言文章来源地址https://www.toymoban.com/news/detail-709261.html

到了这里,关于C++&QT day6的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言:选择+编程(每日一练Day6)

    目录 ​编辑选择题:  题一: 题二: 题三: 题四: 题五: 编程题: 题一:至少是其他数字两倍的最大数 思路一: 思路二: 题二:两个数组的交集  思路一: 本人实力有限可能对一些地方解释和理解的不够清晰,可以自己尝试读代码,或者评论区指出错误,望海涵! 感

    2024年02月11日
    浏览(42)
  • 2023.07.29 驱动开发DAY6

    通过epoll实现一个并发服务器 服务器 客户端 运行结果  

    2024年02月15日
    浏览(36)
  • QT支持多种开发语言

    QT主要是一个C++应用程序框架,但它也提供了对其他一些编程语言的官方或非官方支持。以下是QT支持的一些语言版本及其特点。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.Python (PyQt)  : PyQt是QT的官方Python绑定,允许Python开发者使用QT库来创建

    2024年04月29日
    浏览(38)
  • 【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 战斗背景:做了个串口接收界面,用来接收传输过来的信号。但是光用数字显示太单调,需要用图线显示出来。 战略目标:干掉它。 战术路线:Qt 绘图可以使用 Qt Charts,先了解

    2024年02月11日
    浏览(38)
  • 【VisualStudio】使用 C++ 语言开发 Qt 环境配置教程

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 先上一张效果图,具体步骤主要分为以下三步。 这一步不再赘述,注意一定要安装 C++ 语言。 可以参考这个教程 Visual Studio 2022安装与使用教程。 这一步也不再赘述,网上搜索教

    2024年02月10日
    浏览(63)
  • 【VisualStudio】基于 Visual Studio 使用 C++ 语言开发 Qt 环境配置教程

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 先上一张效果图,具体步骤主要分为以下三步。 这一步不再赘述,注意一定要安装 C++ 语言。 可以参考这个教程 Visual Studio 2022安装与使用教程。 这一步也不再赘述,网上搜索教

    2024年02月15日
    浏览(50)
  • 【Visual Studio】使用 C++ 语言,配合 Qt,开发了一个串口通信界面

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 我要使用的功能比较简单,主要包含扫描串口、打开串口、发送数据、接收数据、暂停按钮、停止按钮,因此接下里将围绕这几个功能依次更新。 我的工程项目名字叫 “GUI”。

    2024年02月11日
    浏览(57)
  • 【Visual Studio】报错 C2653,使用 C++ 语言,配合 Qt 开发串口通信界面

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 这个 Bug 是我做这个工程时遇到的:【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面。 使用 C++ 语言,配合 Qt 开发串口通信界面,在添加 Widget 做

    2024年02月11日
    浏览(40)
  • 【Visual Studio】报错 ASSERT: “i >= 0 && i < size()“,使用 C++ 语言,配合 Qt 开发串口通信界面

    知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio。 这个 Bug 是我做这个工程时遇到的:【Visual Studio】Qt 的实时绘图曲线功能,使用 C++ 语言,配合 Qt 开发串口通信界面。 使用 C++ 语言,配合 Qt 开发串口通信界面,在调试动态绘图

    2024年02月11日
    浏览(41)
  • QT---day1(QT的介绍、常用类及组件)

      思维导图:  

    2024年02月15日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包