2023年9月8日

news2025/1/22 21:05:47

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

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

#include <iostream>

using namespace std;

class Stack
{
private:
    int data[8];
    int top=-1;

public:
    //构造函数
    Stack()
    {

    }

    //构析函数
    ~Stack()
    {

    }

    //拷贝构造函数
    Stack(const Stack &other)
    {

    }

    //判空
    bool stack_empty(Stack *p)
    {
        if(p->top==-1)
        {
            return 1;
        }
        return 0;
    }

    //判满
    bool stack_full(Stack *p)
    {
        if(p->top==7)
        {
            return 1;
        }
        return 0;
    }

    //入栈
    void stack_push(Stack *p,int e)
    {
        if(NULL==p||stack_full(p))
        {
            return;
        }

        p->top++;
        p->data[p->top]=e;
        cout<<e<<endl;
        cout<<"入栈成功"<<endl;
        return ;
    }

    //出栈
    void stack_pop(Stack *p)
    {
        if(NULL==p||stack_empty(p))
        {
            return ;
        }

        int e=p->data[p->top];
        cout<<e<<"出栈成功"<<endl;
        p->top--;
        return;
    }

    //销毁栈
    void stack_free(Stack *p)
    {
        if(NULL==p)
        {
            return ;
        }

        delete p;
        p=nullptr;
        cout<<"销毁成功"<<endl;
        return ;
    }

    //获取栈顶元素
    void stack_gettop(Stack *p)
    {
        if(NULL==p)
        {
            return ;
        }
        int e = p->data[p->top];
        cout<<"栈顶元素为"<<e<<endl;
        return ;
    }

    //求栈的大小
    void stack_size(Stack *p)
    {
        if(NULL==p)
        {
            return ;
        }
        cout<<"栈的大小为"<<p->top+1<<endl;
    }

    void stack_show(Stack *p)
    {
        for(int i=0;i<=p->top;i++)
        {
            cout<<" "<<p->data[i];
        }
        cout<<endl;
        return ;
    }
};


int main()
{
    //初始化
    Stack zhan;

    //定义一个
    Stack *p=new Stack(zhan);

    //入栈
    zhan.stack_push(p,812);
    zhan.stack_push(p,627);
    zhan.stack_push(p,908);
    zhan.stack_push(p,929);
    zhan.stack_push(p,199);
    zhan.stack_show(p);
    cout<<"*******************************"<<endl;
    //出栈
    zhan.stack_pop(p);
    zhan.stack_pop(p);
    zhan.stack_pop(p);
    zhan.stack_show(p);

    //获取栈顶元素
    zhan.stack_gettop(p);

    //求栈大小
    zhan.stack_size(p);

    //销毁栈
    zhan.stack_free(p);

    return 0;
}

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

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

#include <iostream>

using namespace std;

class Queue
{
private:
    int data[8];
    int front=0;
    int tail=0;

public:
    //构造函数
    Queue()
    {

    }

    //构析函数
    ~Queue()
    {

    }

    //拷贝构造函数
    Queue(const Queue &other)
    {

    }

    //判空
    int queue_empty(Queue *p)
    {
        if(NULL==p)
        {
            cout<<"队列不合法"<<endl;
            return -1;
        }
        return 0;
    }

    //判满
    int queue_full(Queue *p)
    {
        if(NULL==p)
        {
            cout<<"所给队列不和发"<<endl;
            return -1;
        }
        return 0;
    }

    //入队
    void queue_push(Queue *p,int e)
    {
        if(NULL==p||queue_full(p))
        {
            cout<<"入队失败"<<endl;
            return ;
        }

        p->data[p->tail]=e;
        p->tail=(p->tail+1)%8;

        cout<<"入队成功"<<endl;
        return ;
    }

    //出队
    void queue_pop(Queue *p)
    {
        if(NULL==p||queue_empty(p))
        {
            cout<<"出队失败"<<endl;
            return ;
        }

        cout<<p->data[p->front]<<"出队成功"<<endl;
        p->front=(p->front+1)%8;
        return ;
    }

    //求队列长度
    void queue_size(Queue *p)
    {
        if(NULL==p)
        {
            cout<<"所给队列不合法"<<endl;
            return ;
        }

        cout<<"队列长度为"<<(p->tail+8-p->front)%8<<endl;
        return ;
    }

    //销毁队列
    void queue_free(Queue *p)
    {
        if(NULL!=p)
        {
            free(p);
            p=NULL;
            cout<<"释放成功"<<endl;
            return ;
        }
        cout<<"所给队列不合法"<<endl;
        return ;
    }

    //遍历
    void queue_show(Queue *p)
    {
        for(int i=p->front;i!=p->tail;i=(i+1)%8)
        {
            cout<<p->data[i]<<" ";
        }
        cout<<endl;
    }
};
int main()
{
    //定义一个队列
    Queue dl;

    //创建指针 申请空间
    Queue *p=new Queue(dl);

    //入队
    dl.queue_push(p,8);
    dl.queue_push(p,60);
    dl.queue_push(p,19);
    dl.queue_push(p,627);
    dl.queue_push(p,78);
    dl.queue_push(p,1);
    dl.queue_push(p,2);
    dl.queue_show(p);
    cout<<"**********************"<<endl;

    //出队
    dl.queue_pop(p);
    dl.queue_pop(p);
    dl.queue_pop(p);
    dl.queue_show(p);
    cout<<"**********************"<<endl;

    //求队列长度
    dl.queue_size(p);

    //销毁队列
    dl.queue_free(p);

    return 0;
}

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

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

相关文章

使用docker创建minio镜像并上传文件,提供demo

使用docker创建minio镜像并上传文件&#xff0c;提供demo 1. 整体描述2. 环境搭建2.1 windows环境搭建2.2 docker部署 3. spring集成3.1 添加依赖3.2 配置文件3.3 创建config类3.4 创建minio操作类3.5 创建启动类3.6 测试controller 4. 测试操作4.1 demo运行4.2 页面查看4.3 上…

GoogLeNet 08

一、发展 1989年&#xff0c;Yann LeCun提出了一种用反向传导进行更新的卷积神经网络&#xff0c;称为LeNet。 1998年&#xff0c;Yann LeCun提出了一种用反向传导进行更新的卷积神经网络&#xff0c;称为LeNet-5 AlexNet是2012年ISLVRC 2012&#xff08;ImageNet Large Sca…

[docker]笔记-存储管理

1、docker数据存储分为非永久性存储和永久性存储。 非永久性存储&#xff1a;容器创建会默认创建非永久性存储&#xff0c;该存储从属于容器&#xff0c;生命周期与容器相同&#xff0c;会随着容器的关闭而消失&#xff08;可理解为内存中数据&#xff0c;会随关机而消失&…

【jmeter】连接mysql无法使用executeQuery()

Can not issue data manipulation statements with executeQuery(). 翻译为&#xff1a; 在这里插入图片描述 看一下JDBC Request里的Query Type 改为Prepared Updata Statement&#xff0c;改完再试一下

CMake+CLion+Qt配置

在这里我下载MSVC的工具包&#xff0c;并没有下载Visual Studio。 配置编译环境 下载Visual Studio&#xff0c;其中有MSVC编译工具&#xff0c;下载MSVC工具包&#xff0c; 工具包下载链接&#xff1a;https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/ …

结构方程模型SEM、路径分析房价和犯罪率数据、预测智力影响因素可视化2案例...

原文链接&#xff1a;http://tecdat.cn/?p25044 在本文&#xff0c;我们将考虑观察/显示所有变量的模型&#xff0c;以及具有潜在变量的模型&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 1 简介 第一种有时称为“路径分析”&#xff0c;而后者有时称为“测…

2023国赛数学建模C题思路代码 - 蔬菜类商品的自动定价与补货决策

# 1 赛题 在生鲜商超中&#xff0c;一般蔬菜类商品的保鲜期都比较短&#xff0c;且品相随销售时间的增加而变差&#xff0c; 大部分品种如当日未售出&#xff0c;隔日就无法再售。因此&#xff0c; 商超通常会根据各商品的历史销售和需 求情况每天进行补货。 由于商超销售的蔬菜…

【Linux】工具Gdb调试轻度使用(C++)

目录 一、Gdb背景 二、Gdb基本命令 【2.1】list | l 【2.2】break | b 【2.5】delete | d 【2.6】disable 【2.7】enable 【2.3】info 【2.4】info locals 【2.6】run | r 【2.7】next | n 【2.8】step | s 【2.9】 continue | c 【2.10】bt 【2.11】finish 三…

idea报错“Static methods in interface require -target:jvm-1.8”

如题&#xff0c;在 idea 中跑 java 、scala 混编代码时&#xff0c;出现上面的错误。 问题的原因很明显是 idea 中的 jdk 版本设置有问题&#xff0c;针对性作如下排查&#xff1a; 检查项目的 java 版本 在File-> Project Settings中&#xff0c;检查检查idea的 java 版本…

SQL Server 跨库/服务器查询

这里写目录标题 1 SQL Server 跨库/服务器查询1.1 跨库查询1.2 跨服务器查询1.2.1 创建链接服务器1.2.2 跨库查询 1.3 拓展&#xff1a;SQL Server 中所有权和用户与架构的分离 1 SQL Server 跨库/服务器查询 1.1 跨库查询 在同一服务器下的跨库查询较为简单&#xff0c;示例…

QT Creator更改主题和编辑器风格(附几款黑色主题)

适用于qtcreator 一、使用自带主题与编辑器风格 打开Qt选择"工具"->"选项"&#xff1b; 2. 选择"环境"->"Theme"切换不同的主题风格 这里切换的是外边框的风格&#xff0c;如果编辑器中有同名的风格&#xff0c;编辑器的风格也…

【计算机基础知识9】前端设计模式与常见类型

目录 一、前言 二、设计模式的基本概念和原则 三、创建型设计模式 四、结构型设计模式 五、行为型设计模式 六、MVC和MVVM框架中的设计模式 七、实际应用案例分析 一、前言 在软件开发领域&#xff0c;设计模式是一种解决常见问题的最佳实践&#xff0c;它可以帮助开发…

手敲Cocos简易地图编辑器:人生地图是一本不断修改的书,每一次编辑都是为了克服新的阻挡

引言 本系列是《8年主程手把手打造Cocos独立游戏开发框架》&#xff0c;欢迎大家关注分享收藏订阅。 在上一篇文章&#xff0c;笔者给大家讲解了在Cocos独立游戏开发框架中&#xff0c;如何自定义实现Tile地图管理器&#xff0c;成功地在游戏中优化加载一张特大的地图。接下来…

持久层框架之Mybatis

概述 MyBatis是apache的一个开源项目iBatis,2010年改名为MyBatis,2013年11月迁移到GithubMyBatis是一款优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注SQL本身而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结…

软件设计模式系列之二——抽象工厂模式

1 抽象工厂模式的定义 抽象工厂模式是一种创建型设计模式&#xff0c;它提供了一种创建一组相关或相互依赖对象的方式&#xff0c;而无需指定它们的具体类。该模式以一组抽象接口为核心&#xff0c;包括抽象工厂接口和一组抽象产品接口&#xff0c;每个具体工厂类负责创建特定…

More Effective C++学习笔记(5)

目录 条款25&#xff1a;将构造函数和非成员函数虚化条款26&#xff1a;限制某个类所能产生的对象数量条款27&#xff1a;要求&#xff08;或禁止&#xff09;对象产生于heap&#xff08;堆&#xff09;之中条款28&#xff1a;智能指针条款29&#xff1a;引用计数条款30&#x…

uview indexList 按字母跳转不了

点击字母跳转不到位的问题&#xff1a;在<u-index-list>添加方法select“clickSelect“ 锚点要加id&#xff0c;用对应的字母做为id值&#xff0c; <u-index-anchor :id"key" :index"key"/> <template><view><view class&qu…

法国新法案强迫 Firefox 等浏览器审查网站

导读Mozilla 基金会已发起了一份请愿书&#xff0c;旨在阻止法国政府强迫 Mozilla Firefox 等浏览器审查网站。 据悉&#xff0c;法国政府正在制定一项旨在打击网络欺诈的 SREN 法案 (“Projet de loi Visant scuriser et reguler lespace numrique”)&#xff0c;包含大约 2…

将本地jar包手动添加到Maven仓库依赖处理

一、起因 在日常开发中&#xff0c;经常会遇到一些情况&#xff0c;就是在更新Maven时&#xff0c;从网上下载jar包的时候网络不稳定或者其他原因导致jar包数据缺失而导致的依赖无法正常引入的情况. 还有一些其他情况如个人jar包一类的。 二、解决 以前以上这些情况&#x…

三维模型3DTile格式轻量化压缩处理效率提高的技术方浅析

三维模型3DTile格式轻量化压缩处理效率提高的技术方浅析 随着三维模型在各个领域的广泛应用&#xff0c;对于其格式的轻量化压缩处理和效率提高的需求也越发迫切。本文将介绍一些技术方法&#xff0c;帮助实现三维模型3DTile格式的轻量化压缩处理并提高处理效率。 首先&#x…