c++day3---9.8

news2024/12/29 10:22:20

1> 自行封装一个栈的类,包含私有成员属性:栈的数组、记录栈顶的变量

成员函数完成:构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小

头文件:

#ifndef Z_H
#define Z_H
#include <iostream>

using namespace std;

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

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

    //析构函数
    ~Zhan();

    //清空栈
    void clear();

    //是否栈空
    int empty();

    //是否栈满
    int full();

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

    //进栈
    void into();

    //出栈
    int out();

    //栈的大小
    void len();

    void show();
};

void choose();

#endif // Z_H

功能函数文件:

#include"z.h"
Zhan::Zhan()
{
    N=10;
    zhan=new int[N];//分配栈空间
    this->top=-1;//初始化栈顶
}

//析构函数
Zhan::~Zhan()
{
    delete zhan;
}

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

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

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

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

//进栈
void Zhan::into()
{

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

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

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

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

//选择功能函数
void choose()
{
    int i=0;
    Zhan z;
    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"z.h"
int main()
{
    choose();
    return 0;
}

2> 自行封装一个循环顺序队列的类,包含私有成员属性:存放队列的数组、队头位置、队尾位置

成员函数完成:构造函数、析构函数、拷贝构造函数、入队、出队、清空队列、判空、判满、求队列大小

头文件:

#ifndef DL_H
#define DL_H
#include <iostream>

using namespace std;

class Duilie
{
private:
    int *duilie;//存放栈中的数据
    int N;//队列空间
    int top;//队列头
    int tail;//队列尾

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

    //析构函数
    ~Duilie();

    //清空队列
    void clear();

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

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

    //进队列
    void into();

    //出队列
    int out();

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

    void show();
};

void choose();
#endif // DL_H

功能函数文件:

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

//析构函数
Duilie::~Duilie()
{
    delete duilie;
}

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

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

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

//进队列
void Duilie::into()
{

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

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

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

void Duilie::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 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;
}

3>思维导图:

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

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

相关文章

NV12数据格式转H265编码格式实现过程

一、需求 在视频处理和传输应用中&#xff0c;将视频数据编码为高效的格式是非常重要的。H.265&#xff08;也称为HEVC&#xff09;是一种先进的视频编码标准&#xff0c;具有更好的压缩性能和图像质量&#xff0c;相比于传统的编码标准&#xff08;如H.264&#xff09;&#…

ARTS 2023.8.28-2023.9.03 (第二周)

ARTS 2023.8.28-2023.9.03 &#xff08;第二周&#xff09; &#x1f4a1;ARTS&#xff1a; A&#xff1a;至少每周完成一道Leecode的算法题&#xff1b; R&#xff1a;阅读并点评至少一篇英文技术文章&#xff1b; T&#xff1a;学习至少一个技术技巧&#xff1b; S&#xff…

【计算机基础知识4】网络通信协议:TCP、UDP、WebSockets

目录 一、TCP&#xff08;传输控制协议&#xff09; 1. TCP的特点 2. TCP的连接建立和终止 3. TCP的可靠性机制 4. TCP的流量控制 二、UDP&#xff08;用户数据报协议&#xff09; 1. UDP的特点 2. UDP的使用场景 三、WebSockets 1. WebSockets协议的特点 2. WebSock…

二分搜索树深度优先遍历(Java 实例代码)

目录 二分搜索树深度优先遍历 Java 实例代码 src/runoob/binary/Traverse.java 文件代码&#xff1a; 二分搜索树深度优先遍历 二分搜索树遍历分为两大类&#xff0c;深度优先遍历和层序遍历。 深度优先遍历分为三种&#xff1a;先序遍历&#xff08;preorder tree walk&am…

严选算法模型质量保障

在算法模型整个生命周期**&#xff08;算法模型生命周期&#xff1a;初始训练数据 --> 模型训练 --> 模型评估 --> 模型预估 --> 训练数据&#xff09;**中&#xff0c;任何环节的问题引入都可能导致算法模型质量问题。所以我们在做模型质量保障的过程中&#xff0…

【日常笔记】使用Server过程中可能遇到的一些问题

使用Server过程中可能遇到的一些问题 1. 如何查找GPU型号与驱动版本之间的关系&#xff1f;2. 如何查看当前Server的内核版本&#xff1f;3. 使用Nvidia过程中可能用到的命令4. 对Jupyter Notebook的一些配置5. TensorFlow的一般操作6. 使用PyTorch的一些操作7. 修改安装源为国…

【漏洞复现】网互联路由器存在密码泄露

漏洞描述 蜂网互联-让链接无限可能&#xff0c;灵活的多线分流&#xff0c;强大的策略分流&#xff0c;灵活调度各种软件应用&#xff0c;深度识别系统&#xff0c;各种应用一网打尽&#xff0c;灵活调整优先级&#xff0c;最简单的路由器&#xff0c;简洁易学的配置&#xff…

MySQL——多表查询

多表查询 多表查询的出现&#xff0c;是为了解决当我们的数据不能存放在一张表上&#xff0c;或者我们的数据本身就是存在多张表上&#xff0c;需要根据字段之间的关系&#xff0c;联合多张表查询出想要的数据。那么根据业务实现的关系&#xff0c;表与表之前也出现了三种基本…

构建微服务项目时启动网关服务失败的解决方案

启动网关服务时报“Unable to create the temporary folder: C:\WINDOWS\TEMP\/nio-file-upload”错误。 代码与之前没有任何变化&#xff0c;但就是启动不了&#xff0c;观察错误意思大概是不能创建临时文件夹&#xff1a;C盘下的WINDOWS下的TEMP目录下的nio-file-upload这个东…

C#,数值计算——多项式微分(Binomial Deviates)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 二项式偏差 /// Binomial Deviates /// </summary> public class Binomialdev : Ran { private double pp { get; set; } private double p…

day57 补

647. 回文子串 力扣题目链接(opens new window) 给定一个字符串&#xff0c;你的任务是计算这个字符串中有多少个回文子串。 具有不同开始位置或结束位置的子串&#xff0c;即使是由相同的字符组成&#xff0c;也会被视作不同的子串。 示例 1&#xff1a; 输入&#xff1a…

机器学习——boosting之提升树

提升树和adaboost基本流程是相似的 我看到提升树的时候&#xff0c;懵了 这…跟adaboost有啥区别&#xff1f;&#xff1f;&#xff1f; 直到看到有个up主说了&#xff0c;我才稍微懂 相当于&#xff0c;我在adaboost里的弱分类器&#xff0c;换成CART决策树就好了呗&#xff1…

Yolov8-pose关键点检测:模型轻量化创新 | ​BiLevelRoutingAttention 动态稀疏注意力 | CVPR2023 BiFormer

💡💡💡本文解决什么问题:BiLevelRoutingAttention ,通过双层路由(bi-level routing)提出了一种新颖的动态稀疏注意力(dynamic sparse attention ) ​BiLevelRoutingAttention | GFLOPs从9.6降低至8.5,参数量从6482kb降低至6134kb, mAP50从0.921提升至0.926 Yolov8…

云备份服务端——实用类工具实现

一&#xff0c;文件实用类设计实现 不管是客户端还是服务端&#xff0c;文件的传输备份都涉及到文件的读写&#xff0c;包括数据管理信息的持久化也是如此&#xff0c;因此首先设计封装文件操作类&#xff0c;这个类封装完毕之后&#xff0c;则在任意模块中对文件进行操作时都将…

SLAM ORB-SLAM2(1)总体框架

SLAM ORB-SLAM2(1)总体框架 1. 简介2. 框架3. TRACKING4. LOCAL MAPPING5. LOOP CLOSING6. MAP1. 简介 ORB-SLAM2 是一个实时和完整的视觉SLAM系统(包括闭环检测、重定位、地图重用等功能) 提供了利用单目、双目以及RGB-D相机完成稀疏三维重建的功能和接口 2. 框架 总体来说…

c++day3

1> 自行封装一个栈的类&#xff0c;包含私有成员属性&#xff1a;栈的数组、记录栈顶的变量 成员函数完成&#xff1a;构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小 #include <iostream>using namespace std; clas…

baichuan2(百川2)本地部署的实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

Vue3,Typescript中引用组件路径无法找到模块报错

是这么个事&#xff0c;我在vue3新创建的项目里&#xff0c;写了个组件叫headerIndex.vue&#xff0c;放到app.vue中import就会报错 路径肯定没写错&#xff0c;找到了解决方法&#xff0c;但是也没想明白为什么 解决方法如下 在vite-env.d.ts文件中加入 declare module &qu…

《向量数据库》——向量数据库Milvus 和大模型出联名款AI原生Milvus Cloud

大模型技术的发展正加速对千行百业的改革和重塑,向量数据库作为大模型的海量记忆体、云计算作为大模型的大算力平台,是大模型走向行业的基石。而电商行业因其高度的数字化程度,成为打磨大模型的绝佳“战场”。 在此背景下,Zilliz 联合亚马逊云科技举办的【向量数据库 X 云计…

Java类和对象(七千字详解!!!带你彻底理解类和对象)

目录 一、面向对象的初步认知 1、什么是面向对象 2、面向对象和面向过程 &#xff08;1&#xff09;传统洗衣服的过程 &#xff08;2&#xff09;现代洗衣服过程 ​编辑 二、类的定义和使用 1、类的定义格式 三、类的实例化 1、什么是实例化 2、类和对象说明 四、t…