c++day6---9.13

news2025/1/21 15:25:59

 思维导图:

改变类型只需将选择功能函数中的Zhan<double> z;中的double改为相对的类型:

栈: 

 头文件:

#ifndef ZHAN_H
#define ZHAN_H
#include <iostream>

using namespace std;

template<typename T>
class Zhan
{
private:
    T *zhan;//存放栈中的数据
    int N;//栈空间
    int top;//栈顶

public:
    //构造函数设置空间为10
    Zhan();

    //析构函数
    ~Zhan();

    Zhan(const Zhan &other);

    //清空栈
    void clear();

    //是否栈空
    int empty();

    //是否栈满
    int full();

    //获取栈顶元素
    void top_data();

    //进栈
    void into();

    //出栈
    int out();

    //栈的大小
    void len();

    void show();
};

//选择功能函数
void choose();


#endif // ZHAN_H

功能文件:

#include"zhan.h"
//构造函数
template <typename T>
Zhan<T>::Zhan()
{
    N=10;
    zhan=new T[N];//分配栈空间
    this->top=-1;//初始化栈顶
}

//析构函数
template <typename T>
Zhan<T>::~Zhan()
{
    delete zhan;
}

//拷贝构造
template <typename T>
Zhan<T>::Zhan(const Zhan &other)
{
    zhan=new T(*other.zhan);
    N=other.N;
    top=other.top;
}

//清空栈
template <typename T>
void Zhan<T>::clear()
{
    this->top=-1;
    cout<<"清空成功"<<endl;
}

//是否栈空
template <typename T>
int Zhan<T>::empty()
{
    return (this->top==-1)?1:0;
}

//是否栈满
template <typename T>
int Zhan<T>::full()
{
    return (this->top==N-1)?1:0;
}

//获取栈顶元素
template <typename T>
void Zhan<T>::top_data()
{
    if(empty())
        return;
    else
    {
        int a=0;
        a=this->top;
        cout<<"栈顶元素为:"<<zhan[a--]<<endl;
    }
}

//进栈
template <typename T>
void Zhan<T>::into()
{

    if(full())
        return;
    else
    {
        T x;
        cout<<"请输入入栈元素:";
        cin>>x;
        while(getchar()!=10);
        zhan[++(this->top)]=x;
        cout<<x<<"入栈成功"<<endl;
    }
}

//出栈
template <typename T>
int Zhan<T>::out()
{
    if(empty())
        return 0;
    else
        return zhan[(this->top)--];
}

//栈的大小
template <typename T>
void Zhan<T>::len()
{
    T a=top;
    a+=1;
    cout<<"现在栈的大小为:"<<a<<endl;
}

template <typename T>
void Zhan<T>::show()
{
    cout<<"现在栈元素为:";
    T a=this->top;
    for(int i=0;i<=a;i++)
    {
        cout<<zhan[i]<<"   ";
    }
    cout<<endl;
}

//选择功能函数
void choose()
{
    Zhan<double> z;
    int i=0;
    while(1)
    {
        system("CLS");
        z.show();
        cout<<"******1.入栈***********"<<endl;
        cout<<"******2.出栈***********"<<endl;
        cout<<"******3.清空栈*********"<<endl;
        cout<<"******4.栈顶元素********"<<endl;
        cout<<"******5.栈的大小********"<<endl;
        cout<<"******6.退出********"<<endl;
        cout<<"请选择功能:";
        cin>>i;
        while(getchar()!=10);
        switch(i)
        {
            case 1:
                z.into();
                break;
            case 2:
                z.out();
                break;
            case 3:
                z.clear();
                break;
            case 4:
                z.top_data();
                break;
            case 5:
                z.len();
                break;
            case 6:
                return;
                break;
            default:
                cout<<"输入错误,请重新输入"<<endl;
                break;
        }
        cout<<"请输入任意字符重新选择:";
        getchar();
    }
}


测试文件:

#include"zhan.h"
int main()
{
    choose();
    return 0;
}

队列:

 头文件:

#ifndef DL_H
#define DL_H
#include <iostream>

using namespace std;
template<typename T>
class Duilie
{
private:
    T *duilie;//存放栈中的数据
    int N;//队列空间
    int top;//队列头
    int tail;//队列尾

public:
    //构造函数设置空间为10
    Duilie();

    //析构函数
    ~Duilie();

    //拷贝构造
    Duilie(const Duilie &other);

    //清空队列
    void clear();

    //是否队列空
    int empty();

    //是否队列满
    int full();

    //进队列
    void into();

    //出队列
    int out();

    //队列的大小
    void len();

    void show();
};

void choose();
#endif // DL_H

功能文件:

#include"dl.h"
template <typename T>
Duilie<T>::Duilie()
{
    N=10;
    duilie=new T[N];//分配队列空间
    this->top=0;//初始化队列头尾
    this->tail=0;
}

//析构函数
template <typename T>
Duilie<T>::~Duilie()
{
    delete duilie;
}

//拷贝构造
template <typename T>
Duilie<T>::Duilie(const Duilie &other)
{
    duilie=new T(*other.duilie);
    N=other.N;
    top=other.top;
    tail=other.tail;
}

//清空队列
template <typename T>
void Duilie<T>::clear()
{
    for(int i=this->top;i!=this->tail;i=(i+1)%N)
    {
        duilie[i]=0;
    }
    this->tail=this->top=0;
    cout<<"清空成功"<<endl;
}

//是否队列空
template <typename T>
int Duilie<T>::empty()
{
    return (this->top==this->tail)?1:0;
}

//是否队列满
template <typename T>
int Duilie<T>::full()
{
    int a=this->tail;
    return ((a+1)%N==this->top)?1:0;
}

//进队列
template <typename T>
void Duilie<T>::into()
{

    if(full())
        return;
    else
    {
        T x;
        int a=this->tail;
        cout<<"请输入入队列的元素:";
        cin>>x;
        while(getchar()!=10);
        duilie[a]=x;
        this->tail=(this->tail+1)%N;
        cout<<x<<"入队列成功"<<endl;
    }
}

//出队列
template <typename T>
int Duilie<T>::out()
{
    if(empty())
        return 0;
    else
    {
        cout<<duilie[this->top]<<"出队列成功"<<endl;
        this->top=(this->top+1)%N;
        return 1;
    }
}

//队列的大小
template <typename T>
void Duilie<T>::len()
{
    int a=0;
    a=(this->tail+N-this->top)%N;
    cout<<"现在队列的大小为:"<<a<<endl;
}

template <typename T>
void Duilie<T>::show()
{
    int a=this->top,b=this->tail;
    cout<<"现在队列从头到尾元素为:";
    for(int i=a;i!=b;i=(i+1)%N)
    {
        cout<<duilie[i]<<"   ";
    }
    cout<<endl;
}

//选择功能函数
void choose()
{
    int i=0;
    Duilie<double> d;
    while(1)
    {
        system("CLS");
        d.show();
        cout<<"******1.入队列***********"<<endl;
        cout<<"******2.出队列***********"<<endl;
        cout<<"******3.清空队列*********"<<endl;
        cout<<"******4.队列的大小********"<<endl;
        cout<<"******5.退出********"<<endl;
        cout<<"请选择功能:";
        cin>>i;
        while(getchar()!=10);
        switch(i)
        {
            case 1:
                d.into();
                break;
            case 2:
                d.out();
                break;
            case 3:
                d.clear();
                break;
            case 4:
                d.len();
                break;
            case 5:
                return;
                break;
            default:
                cout<<"输入错误,请重新输入"<<endl;
                break;
        }
        cout<<"请输入任意字符重新选择:";
        getchar();
    }
}

测试文件:

#include"dl.h"
int main()
{
    choose();
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1007277.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RK3399 android7.1 实现双wifi功能 STA+AP

wifi模组&#xff1a; 主板使用的wifi模块为海华AW-NM43438W模组以及客户提供了一款USB接口的5G双频无线网卡RTL8821CU。 双wifi功能实现效果&#xff1a; 主板自带的wifi模组作为station正常连接外部wifi,USB接口的外接网卡作为AP&#xff08;热点&#xff09;供其他设备连接…

JavaScript逻辑题:牙膏2元 牙刷5元 牙膏盒15元 请问正好花完100元 有多少情况?

// 定义牙膏 牙刷 牙膏盒分别的价格 let toothpaste 0;let toothbrush 0;let toothpastebox 0;// 定义sum用来存储几种情况let sum 0;//第一层循环 循环牙膏买多少for (let i 0; i < 20; i){toothpaste 5 * i;// 二层循环 循环牙刷的数量for (let j 0; j < 50; j…

【Java Web】HTML 标签 总结

目录 1.HTML 2.标签 1. head 标签 1.图标 2.样式居中 2. body 标签 1.注释 &#xff1a; 2.加载图片 3.加载视频 效果 4.区域 效果 5.上下跳转&#xff0c;页面跳转 效果 6.表格 效果 7.有序列表&#xff0c;无序列表 效果 8.登录 效果 9.按钮 10.多选框…

目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)

目标分类 一、目标分类介绍1.1 二分类和多分类的区别1.2 单标签和多标签输出的区别 二、代码获取三、数据集准备四、环境搭建4.1 环境测试 五、模型训练六、模型测试6.1 多标签训练-单标签输出结果6.2 多标签训练-多标签输出结果 一、目标分类介绍 目标分类是一种监督学习任务…

使用flask实现一个简单的代理服务

背景: 有一些客户的服务是我本地windows电脑开vpn之后才能访问的。为了让公司内网的别的电脑不开vpn也能正常请求客户的接口&#xff0c;方便调试&#xff0c;所以使用我的windows电脑实现一个代理的功能。 原理简单画个图: 功能简单直接上代码: from flask import Flask, re…

如何用HighTec进行库文件封装

1、新建一个Workspace&#xff0c;下面均以L9945为例。 2、新建一个工程&#xff0c;可用要封装的模块名来命名。 3、选择主芯片及工程类型。 4、修改编译配置为iROM。 5、删除生成的h文件夹&#xff0c;将原工程中src目录下的.c文件全部删除&#xff0c;将.h文件全部复制到该工…

解决“org.apache.catalina.startup.Catalina.stopServer 未配置关闭端口。通过OS信号关闭服务器。服务器未关闭“

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 问题描述 项目部署至Tomcat服务器报错&#xff1a;org.apache.catalina.startup.Catalina.stopServer 未配置关闭端口。通过OS信号关闭服务 器。服务器未关闭&#xff1b;图…

【计算机视觉 | 目标检测】干货:目标检测常见算法介绍合集(一)

对象检测模型是用于执行对象检测任务的体系结构。 您可以在下面找到不断更新的对象检测模型列表。 文章目录 一、 ScanSSD二、Faster R-CNN三、Mask R-CNN四、YOLOv3五、RetinaNet六、Detection Transformer七、YOLOv4八、FCOS九、YOLOv2十、Fast R-CNN十一、CenterNet十二、R-…

uni-app--》基于小程序开发的电商平台项目实战(二)

&#x1f3cd;️作者简介&#xff1a;大家好&#xff0c;我是亦世凡华、渴望知识储备自己的一名在校大学生 &#x1f6f5;个人主页&#xff1a;亦世凡华、 &#x1f6fa;系列专栏&#xff1a;uni-app &#x1f6b2;座右铭&#xff1a;人生亦可燃烧&#xff0c;亦可腐败&#xf…

Acwing 800. 数组元素的目标和

Acwing 800. 数组元素的目标和 题目描述代码展示 题目描述 代码展示 #include<iostream>using namespace std;const int N 1e5 10;int a[N], b[N];int main() {int n , m , x, i 0, j m - 1;cin >> n >> m >> x;for (int i 0; i < n; i ) sc…

java JUC并发编程 第七章 原子操作类增强

系列文章目录 第一章 java JUC并发编程 Future: link 第二章 java JUC并发编程 多线程锁: link 第三章 java JUC并发编程 中断机制: link 第四章 java JUC并发编程 java内存模型JMM: link 第五章 java JUC并发编程 volatile与JMM: link 第六章 java JUC并发编程 CAS: link 第七…

ABB IW93 HESG440356R1处理器模块

处理能力&#xff1a; IW93处理器模块具有强大的处理能力&#xff0c;能够高效执行控制逻辑和算法&#xff0c;确保工业过程的顺利运行。 通信接口&#xff1a; 该模块通常具有多种通信接口&#xff0c;用于与其他设备和系统进行数据交换和集成。这些接口可能包括以太网、串行…

9.13号作业

1> 将之前定义的栈类和队列类都实现成模板类 栈的模块类 #include <iostream> using namespace std;template <typename T> class Stack { private:T data[40]{0};T top-1; public:Stack (){cout<<"这是构造函数"<<endl;}int stack_e…

相亲App定制开发,助力您打造独特交友平台

作为专业的App开发团队&#xff0c;我们致力于为您打造一款独特而出色的相亲交友App。我们深刻理解相亲领域的需求&#xff0c;通过技术创新和用户体验优化&#xff0c;为您提供个性化的定制开发服务。 在相亲App的定制开发过程中&#xff0c;我们将全面考虑您的目标市场和用户…

Java项目---图片服务器

图片服务器--->服务器&#xff08;图床&#xff09; 核心功能&#xff1a;上传图片、展示图片等 比如&#xff1a;编写博客时我们会插入图片&#xff0c;本质上是往文章中放了一个链接&#xff08;URL&#xff09;&#xff0c;这个URL资源在另外一个服务器上。 核心知识点…

在ubuntu18.04上编译C++版本jsoncpp/opencv/onnxruntime且如何配置CMakelist把他们用起来~

这篇文章背景是笔者在ubuntu上编译C代码&#xff0c;依赖一些包&#xff0c;然后需要编译并配置到CMakelist做的笔记。主要也是一直不太懂CMakellist&#xff0c;做个笔记以防忘记&#xff0c;也给读者提供一站式的参考&#xff0c;可能您需要的不是这几个包&#xff0c;但大同…

STM32f103入门(12)USART串口信息发送+接收

USART 介绍串口发送使用工具初始化发送数据接收数据 介绍 电平标准是数据1和数据0的表达方式&#xff0c;是传输线缆中人为规定的电压与数据的对应关系&#xff0c;串口常用的电平标准有如下三种&#xff1a; TTL电平&#xff1a;3.3V或5V表示1&#xff0c;0V表示0 RS232电平&…

成都都市圈公共图书馆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著

成都都市圈公共图书馆《乡村振兴战略下传统村落文化旅游设计》许少辉八一新著

Discrod账号为什么被封?怎么解封?

Discord作为海外社交产品的新晋王者&#xff0c;近两年来非常受欢迎&#xff0c;据统计&#xff0c;每个月使用Discord的用户数超过3000万。而在跨境电商领域&#xff0c;”内容社群”的打法已经见怪不怪&#xff0c;营销推广少不了Discord&#xff0c;拥有一个或者多个成熟的D…

深度学习-激活函数

文章目录 基础知识Sigmoid函数 &#xff08;Logistic函数&#xff09;双曲正切函数&#xff08;Tanh函数&#xff09;线性整流函数&#xff08;ReLU函数&#xff09;Leaky ReLU函数Softmax函数 基础知识 激活函数是神经网络中的一种非线性函数&#xff0c;它作为神经元的输出函…