c++day3

news2024/11/24 17:52:40

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

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

#include <iostream>

using namespace std;
class Stack
{
private:
    int data[50];
    int top;//记录栈顶的变量
public:
    //构造函数
    Stack():top(-1)//栈顶初始化为-1
    {
        cout<<"构造函数"<<endl;

    }
    //判断栈是否为满
    bool S_full()
    {
        return  top==49;
    }
    //判断栈是否为空
    bool S_empty()
    {
        return  top==-1;
    }
    //入栈
    void S_push(const int&item)
    {
        if(S_full())
        {
            cout<<"栈已满"<<endl;
        }
        else
        {
            data[++top]=item;//入栈操作
        }
    }
    //出栈
    int S_pop()
    {
        if(S_empty())
        {
            cout<<"栈空的"<<endl;
            return -1;
        }
        else
        {
            return data[top--];//出栈操作
        }
    }
    //查看栈顶元素
    void S_peek()
    {
        if(S_empty())
        {
            cout<<"栈空的"<<endl;

        }
        else
        {
            cout<<"栈顶元素为:"<<data[top]<<endl;
        }
    }
    //求栈的大小
    void S_size()
    {
        cout<<"栈的大小:"<<top+1<<endl;
    }
    //清空栈
    void S_free()
    {
        while(1)
        {
        if(S_empty())
        {
          cout<<"栈已清空"<<endl;
          break;
        }
        else
        {
           S_pop();
        }
    }
    }


    //析构函数
    ~Stack()
    {
        cout<<"析构函数"<<endl;
    }
    //拷贝构造函数
    Stack(const Stack& o) {
        cout<<"拷贝构造函数被调用了"<<endl;
        for(int i=0;i<=top;i++)
        {
            data[i]=o.data[i];
        }
        top=o.top;

    }
    //遍历栈
    void S_show()
    {
        cout<<"栈的元素:";
        for(int i=top;i>=0;i--)
        {
            cout<<data[i]<<" ";
        }
        cout<<endl;
    }

};
int main()
{

    Stack  s;
    s.S_push(1);
    s.S_push(2);
    s.S_push(3);
    s.S_push(4);
    s.S_pop();
    s.S_push(5);
    s.S_push(6);
    s.S_peek();
    s.S_size();
    s.S_free();
    s.S_size();
    s.S_push(5);
    s.S_push(6);
    s.S_size();
    s.S_peek();
    s.S_show();



    return 0;
}

 

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

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

#include <iostream>

using namespace std;
class Queue
{
private:
    int data[10];
    int front;//记录头元素位置
    int tail;//记录尾元素位置
public:
    //构造函数
    Queue():front(0),tail(0)//初始化
    {
        cout<<"构造函数"<<endl;

    }
    //判断队列是否为满
    bool S_full()
    {
        return  (tail+1)%10==front;
    }
    //判断队列是否为空
    bool S_empty()
    {
        return  front==tail;
    }
    //入队
    void S_push(const int&item)
    {
        if(S_full())
        {
            cout<<"队列已满"<<endl;
        }
        else
        {
            data[tail]=item;//入队操作
            //队尾后移动
            tail=(tail+1)%10;
            cout<<"入队成功"<<endl;
        }
    }
    //出队
    void S_pop()
    {
        if(S_empty())
        {
            cout<<"队空的"<<endl;

        }
        else
        {
            cout<<data[front]<<"出队成功"<<endl;//出队操作
            //队头后移
            front=(front+1)%10;

        }
    }

    //求队列的大小
    void S_size()
    {
        cout<<"队列的大小:"<<(tail+10-front)%10<<endl;
    }
    //清空队列
    void S_free()
    {
        while(1)
        {
        if(S_empty())
        {
          cout<<"队列已清空"<<endl;
          break;
        }
        else
        {
           S_pop();
        }
    }
    }


    //析构函数
    ~Queue()
    {
        cout<<"析构函数"<<endl;
    }
    //拷贝构造函数
    Queue(const Queue& o) {
        cout<<"拷贝构造函数被调用了"<<endl;
        for(int i=front;i<=tail;i=(i+1)%10)
        {
            data[i]=o.data[i];
        }
       front=o.front;
       tail=o.tail;

    }
    //遍历队列
    void S_show()
    {
        cout<<"队列的元素:";
        for(int i=front;i!=tail;i=(i+1)%10)
        {
            cout<<data[i]<<" ";
        }
        cout<<endl;
    }

};
int main()
{

    Queue  s;
    s.S_push(1);
    s.S_push(2);
    s.S_push(3);
    s.S_push(4);
    s.S_pop();
    s.S_push(5);
    s.S_push(6);
    s.S_size();
    s.S_free();
    s.S_size();
    s.S_push(5);
    s.S_push(6);
    s.S_push(1);
    s.S_push(3);
    s.S_push(1);
    s.S_push(4);
    s.S_size();
    s.S_show();




    return 0;
}

 思维导图

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

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

相关文章

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…

【2023年11月第四版教材】第11章《成本管理》(合集篇)

第11章《成本管理》&#xff08;合集篇&#xff09; 1 章节说明2 管理基础3 管理过程3.1 管理ITTO汇总★★★ 4 规划成本管理4.1 成本管理计划★★★ 5 估算成本5.1 估算成本★★★ &#xff08;19上57&#xff09; &#xff08;19下35&#xff09;5.2 数据分析★★★5.4 成本估…

阿里云免费镜像仓库+金克斯+码云实现自动CI

前提 有阿里云账号&#xff0c;并且已经完成实名认证。最好有一台云服务器&#xff0c;以及码云账号&#xff0c;还有现成的项目以及Dockerfile一、开通阿里云容器镜像服务 1、新建命名空间(一般只需要建一个就行了) 2、在命名空间下&#xff0c;建立镜像仓库&#xff0c;看下…

D. Choosing Capital for Treeland

Problem - 219D - Codeforces 问题描述&#xff1a;Treeland国有 n 个城市, 这 n 个城市连接成了一棵树, 靠单向道路相连, 现在政府想要选择一个城市作为首都, 条件是首都必须能到达其他所有城市, 现在我们不得不将一些道路反转方向, 记反转的条数为 k 条, 我们要找到所有使 k…

c++day2---9.7

1> 思维导图 2> 封装一个结构体&#xff0c;结构体中包含一个私有数组&#xff0c;用来存放学生的成绩&#xff0c;包含一个私有变量&#xff0c;用来记录学生个数&#xff0c; 提供一个公有成员函数&#xff0c;void setNum(int num)用于设置学生个数 提供一个公有成员…

VMware的三种连接模式

目录 目录 前言 系列文章列表 思维导图 1&#xff0c;VMware是什么? 2&#xff0c;VMware的连接模式 2.1,VMware的连接模式是什么? 2.2, VMware的连接模式的分类 3&#xff0c;桥接模式 3.1,图示介绍 3.2,详细介绍 3.3,注意点 4.NAT模式 4.1,NAT协议 4.2,图示…

安科瑞精密配电多回路监控装置在轨道交通项目上的应用

安科瑞 崔丽洁 一、行业背景 轨道交通作为城市公共交通系统的一部分&#xff0c;在过去几十年中得到了广泛的发展和扩张。它在解决城市交通拥堵、减少环境污染、提高城市可持续性等方面发挥了重要作用。随着科技的进步&#xff0c;轨道交通系统也在不断引入新的技术和创新&…

桉木板材的优缺点

桉木&#xff08;Eucalyptus&#xff09;是一种常见的木材品种&#xff0c;具有一些独特的特点和用途。以下是桉木板材的一些优点和缺点&#xff1a; 优点&#xff1a;强度高&#xff1a;桉木具有较高的密度和强度&#xff0c;使其在承重和结构应用中表现出色。它的强度比一些其…

HashMap核心方法:put()、putVal()、resize()与treeifyBin()

一、put方法 put方法的源码如下&#xff1a; 由此可见put的核心方法为putVal() putVal方法各参数值讲解&#xff1a; 前面三个参数不做过多讲解&#xff0c;第4个参数是控制是否要覆盖原来key中已经存在的值&#xff0c;比如HashMap的putIfAbsent方法调的也是putVal方法&…

Reinforcement Learning for Solving the Vehicle Routing Problem

Reinforcement Learning for Solving the Vehicle Routing Problem 一、背景二、模型三、公式 一、背景 本篇论文讨论一种有容量限制的版本CVRP&#xff0c;一辆有有限容量的车辆负责向地理分布的、需求有限的客户交付物品&#xff1b;当车辆的负载耗尽&#xff0c;它返回仓库…

MyBatis中一对一、一对多和多对多关联关系的配置详解

MyBatis中一对一、一对多和多对多关联关系的配置详解 引言一对一关联关系配置一对多关联关系配置结论 多对多关联关系配置结论 引言 MyBatis是一款优秀的持久层框架&#xff0c;它提供了灵活且强大的关联关系配置功能。本文将介绍MyBatis中一对一、一对多和多对多关联关系的配置…

SAP MTS案例教程AA固定资产后台配置

目录 本章介绍 2 AA通用后台配置 3 检查国家特殊的设置 3 创建折旧表 4 分配折旧表到公司代码 5 指定帐户确定 6 创建屏幕格式规则 7 定义号码范围间隔 8 定义资产分类 9 为资产类别分配总账科目 11 分配非税购置的进项税标识符 13 指定间隔和过帐规则 14 设置当前的折旧表 15…

使用Mybatis实现基本的增删改查------数据输入

创建一个空的Maven项目,删去src,用作存储pom的父项目 pom中存放下列依赖: <dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.11</version></dependency><de…

系列二、Nginx简介

一、概述 Nginx是一个高性能的HTTP和反向代理服务器&#xff0c;处理高并发的能力十分强大&#xff0c;能够经受的住高负载的考验&#xff0c;有报告表明其能支持高达50000个并发连接数。 二、代理分类 2.1、正向代理 如果把局域网外的Internet想象成一个巨大的资源库&#x…

基于SSM的家居商城系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

算法-分治算法

文章来源&#xff1a; https://blog.csdn.net/weixin_45630258/article/details/126425400 欢迎各位大佬指点、三连 一、分治 1、定义&#xff1a;分治&#xff0c;也就是分而治之。 它的一般步骤是&#xff1a; ① 将原问题分解成若干个规模较小的子问题&#xff08;子问题…

【计算机网络】OSI七层网络模型概述及应用举例

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 更多计算机网络知识专栏&#xff1a;计算机网络&#x1f525; 给大家跳段…